00001 00002 00003 ; *************************************************** 00004 ; *************************************************** 00005 ; ** ** 00006 ; ** PL-PA00-J001A ** 00007 ; ** ROCKWELL R6500 MICROCOMPUTER SYSTEM ** 00008 ; ** ** 00009 ; ** AIM 65 MONITOR ** 00010 ; ** ** 00011 ; ** PROGRAM LISTING ** 00012 ; ** ** 00013 ; ** REVISION A AUG 22, 1978 ** 00014 ; ** ** 00015 ; *************************************************** 00016 ; *************************************************** 00017 00018 00019 ; ROCKWELL INTERNATIONAL 00020 ; MICROELECTRONIC DEVICES 00021 ; 3310 MIRALOMA AVENUE 00022 ; P. O. BOX 3669 00023 ; ANAHEIM CA U.S.A. 92803 00024 00025 ; ************************************** 00026 ; * USER 6522 ADDRESSES (A000-A00F) * 00027 ; ************************************** 00028 .org $A000 00029 UDRB .equ $A000 ; DATA REG B 00030 UDRAH .equ $A001 ; DATA REG A 00031 UDDRB .equ $A002 ; DATA DIR REG B 00032 UDDRA .equ $A003 ; DATA DIR REG A 00033 UT1L .equ $A004 ; TIMER 1 COUNTER LOW 00034 UT1CH .equ $A005 ; TIMER 1 COUNTER HIGH 00035 UT1LL .equ $A006 ; TIMER 1 LATCH LOW 00036 UT1LH .equ $A007 ; TIMER 1 LATCH HIGH 00037 UT2L .equ $A008 ; TIMER 2 LATCH & COUNTER LOW 00038 UT2CH .equ $A009 ; TIMER 2 COUNTER HIGH 00039 USR .equ $A00A ; SHIFT REGISTER 00040 UACR .equ $A00B ; AUX CONTROL REGISTER 00041 UPCR .equ $A00C ; PERIPHERAL CONTROL REGISTER 00042 UIFR .equ $A00D ; INTERRUPT FLAG REGISTER 00043 UIER .equ $A00E ; INTERRUTP ENABLE REGISTER 00044 UDRA .equ $A00F ; DATA REGISTER A 00045 00046 ASSEM .equ $D000 ; ASSEMBLER ENTRY 00047 BASIEN .equ $B000 ; BASIC ENTRRY (COLD) 00048 BASIRE .equ $B003 ; BASIC REENTRY (WARM) 00049 00050 ; MONITOR RAM 00051 ; TEXT EDITOR EQUATES (PAG 0) 00052 ; OVERLAPS IABUF2+50 (TAPE OUTPUT BUFFER $AD-$FF) 00053 .org $00DF 00054 NOWLN .equ $00DF ; CURENT LINE 00055 BOTLN .equ $00E1 ; LAST ACTIVE , SO FAR 00056 TEXT .equ $00E3 ; LIMITS OF BUFFER (START) 00057 END .equ $00E5 ; LIMITS OF BUFFER (END) 00058 SAVE .equ $00E7 ; USED BY REPLACE 00059 OLDLEN .equ $00E9 ; ORIG LENGTH 00060 LENGTH .equ $00EA ; NEW LENGTH 00061 STRING .equ $00EB ; FIND STRING 00062 00063 .org $0100 00064 ; BREAKPOINTS AND USER I/O HANDLERS 00065 BKS .equ $0100 ; .BRK LOCATIONS 00066 UIN .equ $0108 ; USER INPUT HANDLER (VECTOR) 00067 UOUT .equ $010A ; USER OUTPUT HANDLER (VECTOR) 00068 00069 ; UNUSED KEYS TO GO TO USER ROUTINE 00070 KEYF1 .equ $010C ; USER PUTS A JMP INSTRUCTION TO... 00071 KEYF2 .equ $010F ; GO TO HIS TOURINE ON EITHER KEY.. 00072 KEYF3 .equ $0112 ; ENTRY 00073 00074 ; EQUATES FRO DISASSEMBLER (PAG 1) 00075 .org $0116 ; SAME AS TAPE BUFFER I/O (TARBUFF) 00076 FORMA .equ $0116 00077 LMNEM .equ $0117 00078 RMNEM .equ $0118 00079 00080 ; EQUATES FOR MNEMONIC ENTRY 00081 MOVAD .equ $0126 00082 TYPE .equ $012E 00083 TMASK1 .equ MOVAD 00084 TMASK2 .equ $0127 ; MOVAD+1 00085 CH .equ $0130 00086 ADFLD .equ $0133 00087 HISTM .equ $A42E ; SHARE WITH NAME & HIST 00088 BYTESM .equ $A42F ; HISTM+1 00089 TEMPX .equ $A431 ; HISTM+3 00090 TEMPA .equ $A433 ; HISTM+5 00091 OPCODE .equ $A434 ; HISTM+6 00092 CODFLG .equ $A437 ; HISTM+9 00093 00094 ; ********************************** 00095 ; * 6532 ADDRESSES (A400-A7FF) * 00096 ; ********************************** 00097 .org $A400 00098 MONRAM .equ $A400 00099 ; JUMP VECTORS 00100 IRQV4 .equ $A400 ; IRQ AFTER MONITOR (NO BRK) 00101 NMIV2 .equ $A402 ; NMI 00102 IRQV2 .equ $A404 ; IRQ 00103 00104 ; I/O DEVICES 00105 DILINK .equ $A406 ; DISPL LINKAGE (TO ECHO TO DISP) 00106 TSPEED .equ $A408 ; TAPE SPEED (C7,5B,5A) 00107 GAP .equ $A409 ; TIMING GAP BETWEEN BLOCK 00108 ; END OF USER ALTERABLE LOCATIONS 00109 NPUL .equ $A40A ; # OF HALF PULSES... 00110 TIMG .equ $A40B ; FOR TAPE 00111 REGF .equ $A40E ; REGS FLG FOR SINGLE STEP MODE 00112 DISFLG .equ $A40F ; DISASSEM FLG FOR SINGLE STEP MODE 00113 BKFLG .equ $A410 ; ENABLE OR DIS BREAKPOINTS 00114 PRIFLG .equ $A411 ; ENABLE OR DIS PRINTER 00115 INFLG .equ $A412 ; INPUT DEVICE 00116 OUTFLG .equ $A413 ; OUTPUT DEVICE 00117 HISTP .equ $A414 ; HISTORY PTR (SINGLE STEP) (Y) 00118 CURPO2 .equ $A415 ; DISPLAY POINTER 00119 CURPOS .equ $A416 ; PRINTER POINTER 00120 CNTH30 .equ $A417 ; BAUD RATE & ... 00121 CNTL30 .equ $A418 ; DELAY FOR TTY 00122 COUNT .equ $A419 ; # OF LINES (0-99) 00123 S1 .equ $A41A ; START ADDRESS 00124 ADDR .equ $A41C ; END ADDRESS 00125 CKSUM .equ $A41E ; CHECKSUM 00126 S2 .equ $0106 ; VERTICAL COUNT (ONLY ON DUMP) 00127 00128 ; MONITOR REGISTERS 00129 SAVPS .equ $A420 ; STATUS 00130 SAVA .equ $A421 ; ACCUM 00131 SAVX .equ $A422 ; X REG 00132 SAVY .equ $A423 ; Y REG 00133 SAVS .equ $A424 ; STACK POINTER 00134 SAVPC .equ $A425 ; PROGR COUNTER 00135 00136 ; WORK AREAS FOR PAGE ZERO SIMULATION 00137 ; SIMULATE LDA (NNNN),Y ,WHERE NNNN IS ABSOLUTE 00138 STIY .equ $A427 ; STA NM,Y 00139 CPIY .equ $A42A ; CMP NM,Y OR LDA NM,Y 00140 RTS-blank .equ $A42D ; RTS 00141 LDIY .equ CPIY 00142 00143 ; VARIABLES FOR TAPE 00144 NAME .equ $A42E ; FILE NAME 00145 TAPIN .equ $A434 ; IN FLG (TAPE 1 OR 2) 00146 TAPOUT .equ $A435 ; OUT FLG (TAPE 1 OR 2) 00147 TAPTR .equ $A436 ; TAPE BUFF POINTER 00148 TAPTR2 .equ $A437 ; TAPE OUTPUT BUFF PTR 00149 HIST .equ NAME ; FOUR LAST ADDR + NEXT (SINGL STEP) 00150 BLK .equ $0115 ; BLOCK COUNT 00151 TABUFF .equ $0116 ; TAPE BUFFER (I/O) 00152 BLKO .equ $0168 ; OUTPUT BLOCK COUNT 00153 TABUF2 .equ $00AD ; OUTPUT BUFF WHEN ASSEMB (PAG0) 00154 DIBUFF .equ $A438 ; DISPLAY BUFFER 00155 00156 ; VARIABLES USED IN PRINTING 00157 IBUFM .equ $A460 ; PRINTER BUFFER 00158 IDIR .equ $A474 ; DIRECTION == 0=>+ , FF=>- 00159 ICOL .equ $A475 ; COLUMN LEFTMOST=0,RIGHTMOST=4 00160 IOFFST .equ $A476 ; OFFSET 0=LEFT DGT,1=RIGHT DGT 00161 IDOT .equ $A477 ; # OF LAST DOT ENCOUNTERED 00162 IOUTL .equ $A478 ; LOWER 8 OUTPUTS(9 COLS ON RIGHT) 00163 IOUTU .equ $A479 ; UPPER 2 DIGITS 00164 IBITL .equ $A47A ; 1BIT MSK FOR CURRENT OUTPUT 00165 IBITU .equ $A47B 00166 IMASK .equ $A47C ; MSK FOR CURRENT ROW 00167 JUMP .equ $A47D ; INDIR AND ADDR OF TABL FOR CURR ROW 00168 00169 ; VARIABLES FOR KEYBOARD 00170 ROLLFL .equ $A47F ; SAVE LAST STROBE FOR ROLLOVER 00171 KMASK .equ CPIY ; TO MASK OFF CTRL OR SHIFT 00172 STBKEY .equ $A42B ; CPIY+1 ; STROBE KEY (1-8 COLUMNS) 00173 00174 ; I/O ASSIGNMENT 00175 .org $A480 00176 DRA2 .equ $A480 ; DATA REG A 00177 DDRA2 .equ $A481 ; DATA DIR REG A 00178 DRB2 .equ $A482 ; DATA REG B 00179 DDRB2 .equ $A483 ; DATA DIR REG B 00180 00181 ; WRITE EDGE DETECT CONTROL (NOT USED BECAUSE OF KB) 00182 .org $A484 00183 DNPA7 .equ $A484 ; DISABLE PA7 INT .NEG EDGE DET 00184 DPPA7 .equ $A485 ; DIS PA7 INT ,POS EDGE DETE 00185 ENPA7 .equ $A486 ; ENA PA7 INT ,NEG EDGE DET 00186 EPPA7 .equ $A487 ; ENA PA7 INT ,POS EDG DET 00187 00188 ; READ AND CLEAR INTERRUPT 00189 .org $A485 00190 RINT .equ $A485 ; BIT 7=TIMER FLG , NBIT 6=PA7 FLG 00191 00192 ; TIMER INPTERRUPT 00193 .org $A494 00194 ; WRITE COUNT TO INTERVAL TIMER 00195 ; INTERRUPT DISABLE FOR THESE ADDRS 00196 DIV1 .equ $A494 ; DIV BY 1 (DISABLE);ADD 8 to ENA 00197 DIVB .equ $A495 ; DIV BY 8 (DIS) ; ADD 8 TO ENA 00198 DIV64 .equ $A496 ; DIV BY 64 (DIS) ; ADD 8 TO ENA 00199 DI1024 .equ $A497 ; DIV BY 1024 (DIS) ; ADD 8 TO ENA 00200 00201 ; ********************************************** 00202 ; * 6522 ADDRESSES (MONIT) (A800-ABFF) * 00203 ; ********************************************** 00204 .org $A800 00205 DRB .equ $A800 ; DATA REG B 00206 DRAH .equ $A801 ; DATA REG A 00207 DDRB .equ $A802 ; DATA DIR REG B 00208 DDRA .equ $A803 ; DATA DIR REG B 00209 T1L .equ $A804 ; TIMER 1 COUNTER LOW 00210 T1CH .equ $A805 ; TIMAER 1 COUNTER HIGH 00211 T1LL .equ $A806 ; TIMER 1 LATCH LOW 00212 T1LH .equ $A807 ; TIMER 1 LATCH HIGH 00213 T2L .equ $A808 ; TIMER 2 LATCH & COUNTER LOW 00214 T2H .equ $A809 ; TIEMR 2 COUNTER HIGH 00215 SR .equ $A80A ; SHIFT REGISTER 00216 ACR .equ $A80B ; AUX CONTROL REGISTER 00217 PCR .equ $A80C ; PERIPHERAL CONTROL REGISTER 00218 IFR .equ $A80D ; INTERRUPT FLAG REGISTER 00219 IER .equ $A80E ; INTERRUPT ENABLE REGISTER 00220 DRA .equ $A80F ; DATA REGISTER A 00221 00222 ; DEFINE I/O CONTROL FOR PGR (CA1,CA2,CB1,CB2) 00223 DATIN .equ $0E ; DATA IN CA2=1 00224 DATOUT .equ $0C ; DATA OUT DA2=0 00225 PRST .equ $00 ; PRINT START (CB1) ,NEG DETEC 00226 SP12 .equ $01 ; STROBE P1,P2 (CA1) ,POS DETEC 00227 MON .equ $C0 ; MOTOR ON (CB2 = 0) 00228 MOFF .equ $E0 00229 ; MSKS TO OBTAIN EACH INTERRUPT 00230 MPRST .equ $10 ; INT FLG FOR DB1 00231 MSP12 .equ $02 ; INT FLG FRO CA1 00232 MT2 .equ $20 ; INT FLAG FOR T2 00233 00234 ; DEFINE I/O CONTROL FOR ACR (TIMERS,SR) 00235 PRTIME .equ !1700 ; PRINTING TIME =1.7 MSEC 00236 DEBTIM .equ !5000 ; DEBOUNCE TIME (5 MSEC) 00237 T2I .equ $00 ; T2 AS ONE SHOT (PRI,KB,TTY,TAPE) 00238 T1I .equ $00 ; T1 AS ONE SHOT ,PB7 DIS (TAPES) 00239 T1FR .equ $C0 ; T1 IN FREE RUNNING (TAPE) 00240 00241 ; ****************************** 00242 ; * DISPLAY (AC00-AFFF) * 00243 ; ****************************** 00244 ; REGISTERS FOR DISPLAY (6520) 00245 .org $AC00 00246 RA .equ $AC00 ; REGISTER A 00247 CRA .equ $AC01 ; CONTROL REG A 00248 RB .equ $AC02 ; REGISTER B 00249 CRB .equ $AC03 ; CONTROL REG B 00250 00251 ; CHR 00-03 ENA BY $AC04-AC07 00252 ; CHR 04-07 ENA BY $AC08-AC0B 00253 ; CHR 08-11 ENA BY $AC10-AC13 00254 ; CHR 12-15 ENA BY $AC20-AC23 00255 ; CHR 16-20 ENA BY $AC40-AC43 00256 00257 NULLC .equ $FF 00258 CR .equ $0D 00259 LF .equ $0A 00260 ESCAPE .equ $1B 00261 RUB .equ $08 00262 EQS .equ $BD 00263 ; .FILE A1 00264 00265 ; E=ENTER EDITOR 00266 ; T=RE-ENTER EDITOR TO RE-EDIT SOURCE 00267 ; R=SHOW REGISTERS 00268 ; M=DISPLAY MEMORY 00269 ; =SHOW NEXT 4 ADDRESSES 00270 ; G=GO AT CURENT P.C. (COUNT) 00271 ; /=ALTER CURRENT MEMORY 00272 ; L=LOAD OBJECT 00273 ; D=DUMP OBJECT 00274 ; N=ASSEMBLE 00275 ; *=ALTER P.C. 00276 ; A=ALTER ACCUMULATOR 00277 ; X=ALTER X REGISTER 00278 ; Y=ALTER Y REGISTER 00279 ; P=ALTER PROCESSOR STATUS 00280 ; G=ALTER STACK POINTER 00281 ; B=SET BREAK ADDR 00282 ; ?=SHOW BREAK ADDRESSES 00283 ; $=CLEAR BREAK ADDRESSES 00284 ; H=SHOW TRACE HISTORY STACK 00285 ; V=TOGGLE REGISTER PRINT WITH DIS 00286 ; Z=TOGGLE DISASSEMBLER TRACE 00287 ; \=TURN ON/OFF PRINTER 00288 ; =ADV PAPER 00289 ; I=MNEMNOIC ENTER 00290 ; K=DISASSEMBLE MEMORY 00291 ; 1=TOGGLE TAPE 1 CONTROL (ON OR OFF) 00292 ; 2=TOGGLE TAPE 2 CONTROL 00293 ; 3=VERIFY CKSUM FOR TAPES 00294 ; 4=ENABLE BREAKS 00295 ; 5=BASIC ENTRY (COLD) 00296 ; 6=BASIC REENTRY (WARM) 00297 ; 00298 ; FOLLOWING KEYS ARE UNUSED BUT 'HOOKS" 00299 ; ARE PROVIDED IN LOCATIONS 010C-0114 00300 ; 00301 ; KEYF1,KEYF2,KEYF3 00302 00303 .org $E000 00304 ; ALL MSGS HAVE MSB=1 OF LAST CHAR TO END IT E000 46 52 4F 00305 M1 .byte 'FROM',EQS E003 4D BD E005 54 4F BD 00306 M3 .byte 'TO',EQS E008 20 2A 2A 00307 M4 .byte ' **** PS AA XX YY S',$D3 E00B 2A 2A 20 E00E 50 53 20 E011 41 41 20 E014 58 58 20 E017 59 59 20 E01A 53 D3 E01C 4D 4F 52 00308 M5 .byte 'MORE',$BF E01F 45 BF E021 4F 4E A0 00309 M6 .byte 'ON',$A0 ; 'ON ' E024 4F 46 C6 00310 M7 .byte 'OF',$C6 ; 'OFF' E027 42 52 CB 00311 M8 .byte 'BR',$CB ; 'BRK' E02A 49 4E BD 00312 M9 .byte 'IN',EQS E02D 4F 55 54 00313 M10 .byte 'OUT',EQS E030 BD E031 20 4D 45 00314 M11 .byte ' MEM FAIL',$A0 E034 4D 20 46 E037 41 49 4C E03A A0 E03B 20 50 52 00315 M12 .byte ' PRINTER DOW',$CE E03E 49 4E 54 E041 45 52 20 E044 44 4F 57 E047 CE E048 20 53 52 00316 TMSG0 .byte ' SRCH' E04B 43 48 E04D 20 46 BD 00317 TMSG1 .byte ' F',EQS E050 54 BD 00318 TMSG2 .byte 'T',EQS E052 A0 C5 D2 00319 TMSG3 .byte $A0,$C5,$D2,$D2 ; PRINT ' ERROR' ,MSB=1 E055 D2 E056 CF D2 A0 00320 .byte $CF,$D2,$A0,$A0,$A0,$A0,$A0,$A0,';' E059 A0 A0 A0 E05C A0 A0 3B E05F 41 BD 00321 TMSG5 .byte 'A',EQS E061 42 4C 4B 00322 TMSG6 .byte 'BLK=',$A0 E064 3D A0 E066 A0 CC CF 00323 TMSG7 .byte $A0,$CC,$CF,$C1,$C4,';' E069 C1 C4 3B E06C 45 44 49 00324 EMSG1 .byte 'EDITO',$D2 ; EDITOR MESSAGES E06F 54 4F D2 E072 45 4E C4 00325 EMSG2 .byte 'EN',$C4 00326 00327 ; VECTORS COME HERE FIRST AFTER JUMP THRU FFFA-FFFF E075 6C 02 A4 00328 NMIV1 JMP [NMIV2] ; NMIV2 IS A VECTOR TO NMIV3 E078 6C 04 A4 00329 IRQV1 JMP [IRQV2] ; IRQV2 IS A VECTOR TO IRQV3 00330 00331 ; SINGLE STEP ENTRY POINT (NMI) E07B 8D 21 A4 00332 NMIV3 STA SAVA ; SAVE ACCUM E07E 68 00333 PLA E07F 8D 20 A4 00334 STA SAVPS ; SAVE PROCESSOR STATUS E082 D8 00335 CLD E083 8E 22 A4 00336 STX SAVX ; SAVE X E086 8C 23 A4 00337 STY SAVY E089 68 00338 PLA E08A 8D 25 A4 00339 STA SAVPC ; PROGRAM COUNTER E08D 68 00340 PLA E08E 8D 26 A4 00341 STA SAVPC+1 E091 BA 00342 TSX ; GET STACK POINTER & SAVE IT E092 8E 24 A4 00343 STX SAVS 00344 ; TRACE THE ADDRESS E095 AC 14 A4 00345 LDY HISTP ; GET POINTER TO HISTORY STACK E098 AD 26 A4 00346 LDA SAVPC+1 ; SAVE HALT ADDR IN HISTORY STACK E09B 99 2E A4 00347 STA HIST,Y E09E AD 25 A4 00348 LDA SAVPC E0A1 99 2F A4 00349 STA HIST+1,Y E0A4 20 88 E6 00350 JSR NHIS ; UPDATE POINTER E0A7 AD 10 A4 00351 LDA BKFLG ; SOFT BRAKS ON? E0AA F0 08 00352 BEQ NMI5 ; NO, DON'T CHCK BRKPOINT LIST E0AC 20 6B E7 00353 JSR CKB ; CHECK BREAKPOINT LIST E0AF 90 03 00354 BCC NMI5 E0B1 4C 7F E1 00355 NMI4 JMP IRQ2 ; HIT A BREAK-TRAP TO MONITOR E0B4 20 90 E7 00356 NMI5 JSR DONE ; COUNT =0? E0B7 F0 F8 00357 BEQ NMI4 ; YES, TRAP TO MONITOR E0B9 20 07 E9 00358 JSR RCHEK ; CHK IF HE WANTS TO ITNERR E0BC 4C 6D E2 00359 JMP GOBK ; NOT DONE-RESUME EXECUTION 00360 00361 ; POWER UP AND REST ENTRY POINT (RST TRANSFERS HERE) E0BF D8 00362 RSET CLD ; CLEAR DEC MODE E0C0 78 00363 SEI ; DISBALE INTERRUPT E0C1 A2 FF 00364 LDX #$FF ; INIT STACK POINTER E0C3 9A 00365 TXS E0C4 8E 24 A4 00366 STX SAVS ; ALSO INIT SAVED STACK PTR 00367 ; INITIALIZE 6522 E0C7 A2 0E 00368 LDX #14 E0C9 BD 43 E7 00369 RS1 LDA INTAB1,X ; PB1-PB0,PA7-PA0 FOR PRNTR E0CC 9D 00 A8 00370 STA DRB,X ; PB2=TTO,PB6=TTI E0CF CA 00371 DEX ; PB4-PB5=TAPE CONTROL,PB7=DATA E0D0 10 F7 00372 BPL RS1 ; PB3=SWITCH KB/TTY 00373 ; INITIALIZE 6532 E0D2 A2 03 00374 LDX #3 ; PORTS USED FOR KB E0D4 BD 52 E7 00375 RS2 LDA INTAB2,X ; PA0-PA7 AS OUTPUT E0D7 9D 80 A4 00376 STA DRA2,X ; PB0-PB7 AS INPUT E0DA CA 00377 DEX E0DB 10 F7 00378 BPL RS2 00379 ; INITIALIZE MONITOR RAM (6532) E0DD AD 56 E7 00380 LDA INTAB3 ; CHECK IF NMIV2 HAS BEEN CHANGED E0E0 CD 02 A4 00381 CMP NMIV2 ; IF IT HAS THEN ASSUME A COLD E0E3 D0 0C 00382 BNE RS3A ; START AND INITIALZE EVERYTHING E0E5 AD 57 E7 00383 LDA INTAB3+1 E0E8 CD 03 A4 00384 CMP NMIV2+1 E0EB D0 04 00385 BNE RS3A E0ED A2 10 00386 LDX #16 ; THEY ARE EQUAL ,IT'S A WARM RESET E0EF D0 02 00387 BNE RS3 E0F1 A2 00 00388 RS3A LDX #0 ; INIT EVERYTHING (POWER UP) E0F3 BD 56 E7 00389 RS3 LDA INTAB3,X E0F6 9D 02 A4 00390 STA NMIV2,X E0F9 E8 00391 INX E0FA E0 15 00392 CPX #21 E0FC 90 F5 00393 BCC RS3 00394 ; INITIALIZE DISPLAY (6520) E0FE A9 00 00395 LDA #0 ; SET CONTR REG FOR DATA DIR REG E100 A2 01 00396 LDX #1 E102 20 13 E1 00397 JSR SETREG E105 A9 FF 00398 LDA #$FF ; SET DATA DIR REG FOR OUTPUT E107 CA 00399 DEX E108 20 13 E1 00400 JSR SETREG E10B A9 04 00401 LDA #$04 ; SET CONTR REG FOR PORTS E10D E8 00402 INX E10E 20 13 E1 00403 JSR SETREG E111 D0 07 00404 BNE RS3B E113 9D 00 AC 00405 SETREG STA RA,X E116 9D 02 AC 00406 STA RB,X E119 60 00407 RTS E11A 58 00408 RS3B CLI ; CLEAR INTRERRUPT 00409 00410 ; KB/TTY SWITCH TEST AND BIT RATE MEASUREMENT E11B A9 08 00411 LDA #$08 ; PB3=SWITCH KB/TTY E11D 2C 00 A8 00412 RS4 BIT DRB ; A^M ,PB6-> V (OVERFLOW FLG) E120 D0 22 00413 BNE RS7 ; BRANCH ON KB E122 70 F9 00414 BVS RS4 ; START BIT=PB6=0? E124 A9 FF 00415 LDA #$FF ; YES ,INITIALIZE TIMER T2 E126 8D 09 A8 00416 STA T2H E129 2C 00 A8 00417 RS5 BIT DRB ; END OF START BIT ? E12C 50 FB 00418 BVC RS5 ; NO ,WAIT UNTIL PB6 BACK TO 1 E12E AD 09 A8 00419 LDA T2H ; STORE TIMING E131 49 FF 00420 EOR #$FF ; COMPLEMENT E133 8D 17 A4 00421 STA CNTH30 E136 AD 08 A8 00422 LDA T2L E139 49 FF 00423 EOR #$FF E13B 20 7C FE 00424 JSR PATCH1 ; ADJUST IT E13E 20 13 EA 00425 RS6 JSR CRLOW ; CLEAR DISPLAY E141 4C 72 FF 00426 JMP PAT21 E144 A2 13 00427 RS7 LDX #19 ; CLEAR HARDARE CURSORS E146 8A 00428 RS8 TXA E147 48 00429 PHA E148 A9 00 00430 LDA #0 E14A 20 7B EF 00431 JSR OUTDD1 E14D 68 00432 PLA E14E AA 00433 TAX E14F CA 00434 DEX E150 10 F4 00435 BPL RS8 E152 30 EA 00436 BMI RS6 00437 00438 ; BRK INSTR (00) OR IRQ ENTRY POINT E154 8D 21 A4 00439 IRQV3 STA SAVA E157 68 00440 PLA E158 48 00441 PHA ; GET STATUS E159 29 10 00442 AND #$10 ; SEE IF 'BRK' , ISOLATE B FLAG E15B D0 06 00443 BNE IRQ1 ; TRAP WAS CAUSED BY 'BRK' INSTRUC E15D AD 21 A4 00444 LDA SAVA ; TRAP CAUSED BY IRQ SO TRANSFER E160 6C 00 A4 00445 JMP [IRQV4] ; CONTROL TO USER THRU VECTOR 00446 ; IS 'BRK' INSTR ,SHOW PC & DATA 00447 ; PC IS OFF BY ONE , SO ADJUST IT E163 68 00448 IRQ1 PLA E164 8D 20 A4 00449 STA SAVPS ; SAVE PROCESSOR STATUS E167 8E 22 A4 00450 STX SAVX E16A 8C 23 A4 00451 STY SAVY E16D D8 00452 CLD E16E 68 00453 PLA ; PROG CNTR E16F 38 00454 SEC ; SUBTRACT ONE FROM RETURN ADDR E170 E9 01 00455 SBC #1 E172 8D 25 A4 00456 STA SAVPC E175 68 00457 PLA E176 E9 00 00458 SBC #0 E178 8D 26 A4 00459 STA SAVPC+1 E17B BA 00460 TSX ; GET STACK PTR & SAVE IT E17C 8E 24 A4 00461 STX SAVS 00462 ; SHOW PC AND DATA E17F 20 61 F4 00463 IRQ2 JSR REGQ ; SHOW NEXT INSTRUCTION & CONTINUE 00464 00465 ; THIS ROUTINE WILL GET A CHR WITH '( )' FROM 00466 ; KB/TTY & THEN WILL GO TO THE RESPECTIVE COMMAND E182 4C 59 FF 00467 START JMP PAT19 ; CLEAR DEC MODE & (CR) E185 A9 BC 00468 STA1 LDA #$BC ; '(' CHR WITH MRB=1 FRO DISP E187 20 7A E9 00469 JSR OUTPUT E18A 20 96 FE 00470 JSR RED1 ; GET CHR & ECHO FROM KB/TTY E18D 48 00471 PHA E18E A9 3E 00472 LDA #'>' E190 20 7A E9 00473 JSR OUTPUT E193 68 00474 PLA ; SCAN LIST OF CMNDS FOR ENTERED CHR E194 A2 20 00475 LDX #MCNT ; COUNT OF COMMANDS E196 DD C4 E1 00476 MCM2 CMP COMB,X ; CHECK NEXT COMMAND IN LIST E199 F0 11 00477 BEQ MCM3 ; MATHC , SO PROCESS THIS COMMAND E19B CA 00478 DEX E19C 10 F8 00479 BPL MCM2 00480 ; IS BAD COMMAND E19E 20 D4 E7 00481 JSR QM E1A1 D8 00482 COMIN CLD E1A2 20 FE E8 00483 JSR LL E1A5 AE 24 A4 00484 LDX SAVS E1A8 9A 00485 TXS E1A9 4C 82 E1 00486 JMP START 00487 ; HAVE VALID COMMAND E1AC 8A 00488 MCM3 TXA ; CONVERT TO WORD (MULT BY 2) E1AD 0A 00489 ASL A ; 2 BYTES (ADDR) E1AE AA 00490 TAX E1AF BD E5 E1 00491 LDA MONCOM,X ; GET ADDRESS OF COMMAND PROCESSOR E1B2 8D 7D A4 00492 STA JUMP E1B5 BD E6 E1 00493 LDA MONCOM+1,X E1B8 8D 7E A4 00494 STA JUMP+1 E1BB 20 C1 E1 00495 JSR JMPR ; CMD PROOCESSORS CAN EXIT WITH 'RTS' E1BE 4C 82 E1 00496 JMP START E1C1 6C 7D A4 00497 JMPR JMP [JUMP] ; GO TO COMMAND 00498 00499 ; VALID COMMANDS 00500 MCNT .equ !32 ; COUNT E1C4 45 54 52 00501 COMB .byte 'ETRMG/LDN*AXYPS ' E1C7 4D 47 2F E1CA 4C 44 4E E1CD 2A 41 58 E1D0 59 50 53 E1D3 20 E1D4 42 3F 23 00502 .byte 'B?#HVZIK123456[]',$5E E1D7 48 56 5A E1DA 49 4B 31 E1DD 32 33 34 E1E0 35 36 5B E1E3 5D 5E 00503 E1E5 39 F6 CF 00504 MONCOM .word EDIT,REENTR,REG,MEM,GO E1E8 F6 27 E2 E1EB 48 E2 61 E1EE E2 E1EF A0 E2 E6 00505 .word CHNGG,LOAD,DUMP,ASSEM,CGPC,CGA E1F2 E2 3B E4 E1F5 00 D0 D4 E1F8 E5 EE E5 E1FB F2 E5 F6 00506 .word CGX,CGY,CGPS,CGS,NXT5,BRKA E1FE E5 EA E5 E201 FA E5 0D E204 E6 1B E6 E207 4D E6 FE 00507 .word SHOW,CLRBK,SHIS,REGT,TRACE E20A E6 65 E6 E20D D9 E6 DD E210 E6 E211 9E FB 0A 00508 .word MNEENT,KDISA,TOGTA1,TOGTA2,VECKSM E214 E7 BD E6 E217 CB E6 94 E21A E6 E21B E5 E6 00 00509 .word BRKK,BASIEN,BASIRE E21E B0 03 B0 00510 ; USER DEFINED FUNCTIONS E221 0C 01 0F 00511 .word KEYF1,KEYF2,KEYF3 E224 01 12 01 00512 00513 ; ***** R COMMAND-DISPLAY REGISTERS ***** E227 20 13 EA 00514 REG JSR CRLOW ; CLEAR DISPLAY IF KB E22A A0 08 00515 LDY #M4-M1 ; MESSAG & (CR) E22C 20 AF E7 00516 JSR KEP E22F 20 24 EA 00517 JSR CRCK E232 20 3E E8 00518 REG1 JSR BLANK E235 A0 09 00519 LDY #SAVPC-ADDR ; OUTPUT PGR CNTR (SAVPC) E237 20 DD E2 00520 JSR WRITAD E23A A9 20 00521 LDA #SAVPS E241 8D 1D A4 00524 STA ADDR+1 E244 A2 05 00525 LDX #5 ; COUNT E246 D0 07 00526 BNE MEM1 ; SHARE CODE 00527 00528 ; ***** M COMMAND-DISPLAY MEMORY ***** E248 20 AE EA 00529 MEM JSR ADDIN ; GET START ADDRESS IN ADDR E24B B0 13 00530 BCS MEM3 E24D A2 04 00531 MEIN LDX #4 E24F A0 00 00532 MEM1 LDY #0 E251 20 3E E8 00533 MEM2 JSR BLANK E254 A9 1C 00534 LDA # 24 ? E49B 90 05 00814 BCC DU8 ; NO ,ONLY OUTPUT REMAINING BYTES E49D B0 01 00815 BCS DU7 ; YES ,24 BYETS IN NEXT RECORD E49F 68 00816 DU6 PLA E4A0 A9 18 00817 DU7 LDA #24 00818 ; OUTPUT ";" ,# OF BYTES AND SA E4A2 48 00819 DU8 PHA E4A3 20 BA E9 00820 JSR SEMI ; SEMICOLON E4A6 68 00821 PLA E4A7 8D 19 A4 00822 STA COUNT ; SAVE # OF BYTES E4AA 20 38 E5 00823 JSR OUTCK ; OUTPUT # OF BYTES E4AD AD 1B A4 00824 LDA S1+1 ; OUTPUT ADDRESS E4B0 20 38 E5 00825 JSR OUTCK E4B3 AD 1A A4 00826 LDA S1 E4B6 20 38 E5 00827 JSR OUTCK 00828 ; OUTPUT DATA E4B9 20 31 E5 00829 DU9 JSR OUTCKS ; GET CHAR SPEC BY S1 (NO PAG 0) E4BC A9 00 00830 LDA #0 ; CLEAR DISP PTR E4BE 8D 15 A4 00831 STA CURPO2 E4C1 20 5D E5 00832 JSR ADDS1 ; INCR S1+1,S1 E4C4 CE 19 A4 00833 DEC COUNT ; DECREMENT BYTE COUNT E4C7 D0 F0 00834 BNE DU9 ; NOT DONE WITH THIS RECORD 00835 ; OUTPUT CKSUM E4C9 AD 1F A4 00836 LDA CKSUM+1 E4CC 20 3B E5 00837 JSR OUTCK1 ; WITHOUT CHEKA E4CF AD 1E A4 00838 LDA CKSUM E4D2 20 3B E5 00839 JSR OUTCK1 E4D5 20 66 E5 00840 JSR INCS2 ; INC VERTICAL COUNT E4D8 4C 7D E4 00841 JMP DU2 ; NEXT RECORD 00842 ; ALL DONE E4DB A0 1C 00843 DU10 LDY #M5-M1 ; PRINT 'MORE ?# E4DD 20 70 E9 00844 JSR KEPR ; OUTPUT MESSAGE AND GET AN ANSWER E4E0 C9 59 00845 CMP #'Y' E4E2 D0 03 00846 BNE *+5 E4E4 4C 44 E4 00847 JMP DU1 ; DUMP MORE DATA E4E7 68 00848 PLA ; RESTORE FLG E4E8 8D 10 A4 00849 STA BKFLG 00850 ; OUTPUT LAST RECORD E4EB 20 66 E5 00851 JSR INCS2 E4EE 20 BA E9 00852 JSR SEMI ; OUTPUT ';' E4F1 A2 02 00853 LDX #2 E4F3 A9 00 00854 LDA #0 ; OUTPUT # OF BYTES (0=LAST RECORD) E4F5 20 3B E5 00855 JSR OUTCK1 E4F8 AD 07 01 00856 DU10A LDA S2+1 ; OUTPUT RECORD COUNT E4FB 20 3B E5 00857 JSR OUTCK1 ; CHECKCUM IS THE SAME E4FE AD 06 01 00858 LDA S2 E501 20 3B E5 00859 JSR OUTCK1 E504 CA 00860 DEX E505 D0 F1 00861 BNE DU10A E507 20 F0 E9 00862 JSR CRLF 00863 ; CLOSE TAPE BLOCK IF ACTIVE E50A AD 13 A4 00864 DU11 LDA OUTFLG E50D C9 54 00865 CMP #'T' E50F D0 0F 00866 BNE DU13 ; NO ,BRANCH E511 AD 37 A4 00867 DU12 LDA TAPTR2 ; TAP OUTPUT BUFF PTR E514 C9 01 00868 CMP #1 ; BECAUSE FIRST ONE IS BLOCK COUNT E516 F0 08 00869 BEQ DU13 ; NO DATA TO WRITE E518 A9 00 00870 LDA #0 ; FILL REST BUFF ZEROS E51A 20 8B F1 00871 JSR TOBYTE ; OUTPUT TO BUFF E51D 4C 11 E5 00872 JMP DU12 ; FINISH THIS BLOCK E520 20 13 EA 00873 DU13 JSR CRLOW E523 18 00874 CLC ; ENABL INTERR E524 A9 00 00875 LDA #T1I ; T1 FROM FREE RUNNING ONE SHOT E526 8D 0B A8 00876 STA ACR E529 A9 34 00877 DU14 LDA #$34 ; SET BOTH TAPES ON E52B 8D 00 A8 00878 STA DRB E52E 4C FE E8 00879 JMP LL 00880 00881 ; GET CHARACTER SPECIFIED BY START ADDR (S1) E531 A9 1A 00882 OUTCKS LDA # 1 BYTE E54E 48 00898 CHEKA PHA ; ADD TO CHECKSUM E54F 18 00899 CLC E550 6D 1E A4 00900 ADC CKSUM E553 8D 1E A4 00901 STA CKSUM E556 90 03 00902 BCC *+5 E558 EE 1F A4 00903 INC CKSUM+1 E55B 68 00904 PLA E55C 60 00905 RTS 00906 00907 ; ADD ONE TO START ADDR (S1) E55D EE 1A A4 00908 ADDS1 INC S1 E560 D0 03 00909 BNE ADD1 E562 EE 1B A4 00910 INC S1+1 E565 60 00911 ADD1 RTS 00912 E566 EE 06 01 00913 INCS2 INC S2 ; INCR VERTICAL COUNT E569 D0 03 00914 BNE *+5 E56B EE 07 01 00915 INC S2+1 E56E 60 00916 RTS 00917 00918 ; OPEN A FILE FOR OUTPUT TO TAPE BY BLOCKS 00919 ; OUTPUT FILENAME GIVEN BY JSR WHEREO TO TAPE BUFF E56F A2 00 00920 DUMPTA LDX #0 ; INITIALIZE TAPTR E571 8A 00921 TXA ; TO OUTPUT E572 8E 68 01 00922 STX BLKO ; BLOCK COUNTER E575 8E 37 A4 00923 STX TAPTR2 ; TAP OUTPUT BUFF PTR E578 20 8B F1 00924 JSR TOBYTE ; TWO START OF FILE CHRS E57B BD 2E A4 00925 DUMPT1 LDA NAME,X ; OUTPUT FILENAME E57E 20 8B F1 00926 JSR TOBYTE E581 E8 00927 INX E582 E0 05 00928 CPX #5 ; 5 FILENAME CHRS ? E584 D0 F5 00929 BNE DUMPT1 E586 60 00930 RTS 00931 00932 ; DUMP ROUTINE TO TAPE WITH KIM-1 FORMAT E587 20 1D F2 00933 DUMPKI JSR TAOSET ; SET TAPE FOR OUTPUT E58A A9 2A 00934 LDA #'*' ; TO EITHER 1 OR 2 E58C 20 4A F2 00935 JSR OUTTAP ; DIRECTLY TO TAPE 00936 ; ID FROM LAST 2 CHRS OF FILENAME E58F 20 25 E4 00937 JSR GETID E592 20 3B E5 00938 JSR OUTCK1 E595 20 4D EB 00939 JSR CLRCK 00940 ; STARTING ADDR E598 AD 1A A4 00941 LDA S1 E59B 20 38 E5 00942 JSR OUTCK ; WITH CHCKSUM E59E AD 1B A4 00943 LDA S1+1 E5A1 20 38 E5 00944 JSR OUTCK 00945 ; OUTPUT DATA E5A4 20 31 E5 00946 DUK2 JSR OUTCKS ; OUTPUT CHR SPECIFIED BY S1+1,S1 E5A7 20 5D E5 00947 JSR ADDS1 ; INCREM S1+1,S1 E5AA AD 1A A4 00948 LDA S1 ; CHCK FOR LAST BYTE E5AD CD 1C A4 00949 CMP ADDR ; LSB OF END ADDR E5B0 AD 1B A4 00950 LDA S1+1 E5B3 ED 1D A4 00951 SBC ADDR+1 E5B6 90 EC 00952 BCC DUK2 ; NEXT CHR 00953 ; NOW SEND END CHR '/' E5B8 A9 2F 00954 LDA #$2F E5BA 20 4A F2 00955 JSR OUTTAP ; DIRECTLY TO TAPE 00956 ; CHECKSUM E5BD AD 1E A4 00957 LDA CKSUM E5C0 20 46 EA 00958 JSR NUMA ; ASCII REPRES E5C3 AD 1F A4 00959 LDA CKSUM+1 E5C6 20 46 EA 00960 JSR NUMA 00961 ; TWO EOT CHRS E5C9 A9 04 00962 LDA #$04 E5CB 20 4A F2 00963 JSR OUTTAP E5CE 20 4A F2 00964 JSR OUTTAP 00965 ; TURN TAPES ON E5D1 4C 20 E5 00966 JMP DU13 00967 00968 ; ***** * COMMAND-ALTER PROGRAM COUNTER ***** E5D4 20 AE EA 00969 CGPC JSR ADDIN ; ADDR <=ADDRESS ENTERED FROM KB E5D7 20 DD E5 00970 CGPC0 JSR CGPC1 ; TRANSFER ADDR TO SAVPC E5DA 4C 13 EA 00971 JMP CRLOW E5DD AD 1D A4 00972 CGPC1 LDA ADDR+1 ; THIS WAY MNEMONICS CAN USE IT E5E0 8D 26 A4 00973 STA SAVPC+1 E5E3 AD 1C A4 00974 LDA ADDR E5E6 8D 25 A4 00975 STA SAVPC E5E9 60 00976 RTS 00977 00978 ; ***** P COMMAND-ALTER PROCESSOR STATUS ***** E5EA A2 00 00979 CGPS LDX #0 E5EC F0 0E 00980 BEQ CGALL 00981 00982 ; ***** A COMMAND-ALTER ACCUMULATOR ***** E5EE A2 01 00983 CGA LDX #1 E5F0 D0 0A 00984 BNE CGALL 00985 00986 ; ***** X COMMAND-ALTER X REGISTER ***** E5F2 A2 02 00987 CGX LDX #2 E5F4 D0 06 00988 BNE CGALL 00989 00990 ; ***** Y COMMAND-ALTER Y REGISTER ***** E5F6 A2 03 00991 CGY LDX #3 E5F8 D0 02 00992 BNE CGALL 00993 00994 ; ***** S COMMAND-ALTER STACK POINTER ***** E5FA A2 04 00995 CGS LDX #4 E5FC 20 D8 E7 00996 CGALL JSR EQUAL ; PRINT PROMPT E5FF 20 5D EA 00997 JSR RD2 ; GET VALUE FORM KEYBAORD E602 B0 04 00998 BCS GOERR E604 9D 20 A4 00999 STA SAVPS,X E607 60 01000 RTS E608 20 D4 E7 01001 GOERR JSR QM E60B D0 EF 01002 BNE CGALL 01003 01004 ; ***** (SPACE) COMMAND-SHOW NEXT 5 MEMORY LOC ***** E60D 20 3E E8 01005 NXT5 JSR BLANK E610 A0 04 01006 LDY #4 ; UPDATE ADDR FROM E612 20 CD E2 01007 JSR NXTADD ; (M)=XXXX E615 20 DB E2 01008 JSR WRITAZ ; OUTPUT ADDRESS E618 4C 4D E2 01009 JMP MEIN ; DISPLAY CONTEXT OF NEXT 4 LOCS 01010 01011 ; ***** B COMMAND-SET BREAKPOINT ADDR ***** E61B A0 27 01012 BRKA LDY #M8-M1 ; PRINT 'BRK' E61D 20 AF E7 01013 JSR KEP E620 20 37 E8 01014 BRK1 JSR PSL1 ; PRINT '/' E623 20 73 E9 01015 JSR REDOUT ; GET BREAK NUMBER E626 38 01016 SEC E627 E9 30 01017 SBC #$30 ; 0 THRU 3 E629 30 04 01018 BMI BKERR ; CHARACTER < '0' - ILLEGAL E62B C9 04 01019 CMP #4 ; FOUR BREAKPOINTS E62D 30 05 01020 BMI BKOK ; 0 < CHARACTER < 4 -OK E62F 20 D4 E7 01021 BKERR JSR QM ; ERROR E632 D0 EC 01022 BNE BRK1 ; ALLOW REENTRY OF BREAK NUMBER E634 0A 01023 BKOK ASL A ; *2 TO FORM WORD OFFSET E635 48 01024 PHA ; SAVE IT E636 20 AE EA 01025 JSR ADDIN ; GET ADDRESS FOR BREAKPOINT E639 68 01026 PLA E63A B0 10 01027 BCS BK02 ; BAD ADDRESS ENTERED E63C 20 3D FF 01028 JSR PATC18 ; (CR) & CLR BUFFERS E63F AA 01029 TAX ; # OF BRK E640 AD 1C A4 01030 LDA ADDR ; STORE ENTERED ADDR IN BRKPT LIST E643 9D 00 01 01031 STA BKS,X E646 AD 1D A4 01032 LDA ADDR+1 E649 9D 01 01 01033 STA BKS+1,X E64C 60 01034 BK02 RTS ; ALL DONE 01035 01036 ; ***** ? COMMAND-SHOW CURRENT BREAKPOINTS ***** E64D A0 00 01037 SHOW LDY #0 E64F 20 13 EA 01038 JSR CRLOW E652 20 3E E8 01039 SH1 JSR BLANK E655 BE 00 01 01040 LDX BKS,Y ; ADDRESS OF NEXT BREAKPOINT E658 B9 01 01 01041 LDA BKS+1,Y E65B 20 42 EA 01042 JSR WRAX ; SHOW BREAKPOITN ADDRESS E65E C8 01043 INY E65F C8 01044 INY E660 C0 08 01045 CPY #8 E662 D0 EE 01046 BNE SH1 E664 60 01047 RTS 01048 01049 ; ***** H COMMAND-SHOW TRACE STACK HISTORY ***** 01050 ; LAST FIVE INSTR ADDRS E665 A2 05 01051 SHIS LDX #5 ; NUMBER OF ENTRIES E667 8E 29 A4 01052 STX STIY+2 E66A AC 14 A4 01053 SHI1 LDY HISTP ; POINTER TO LATETS ENTRY E66D 20 13 EA 01054 JSR CRLOW E670 20 3E E8 01055 JSR BLANK E673 B9 2E A4 01056 LDA HIST,Y ; OUTPUT ADDRESS OF ENTRY E676 20 46 EA 01057 JSR NUMA E679 B9 2F A4 01058 LDA HIST+1,Y E67C 20 46 EA 01059 JSR NUMA E67F 20 88 E6 01060 JSR NHIS ; UPDATE POINTER E682 CE 29 A4 01061 DEC STIY+2 E685 D0 E3 01062 BNE SHI1 E687 60 01063 RTS 01064 01065 ; UPDATE HISTORY POINTER (PART OF H) E688 C8 01066 NHIS INY E689 C8 01067 INY E68A C0 0A 01068 CPY #10 E68C D0 02 01069 BNE NH1 E68E A0 00 01070 LDY #0 ; WRAPAROUND AT 10 E690 8C 14 A4 01071 NH1 STY HISTP E693 60 01072 RTS 01073 01074 ; ***** 3 COMMAND-VERIFY TAPES ***** 01075 ; VERIFY CKSUM OF BLOCKS E694 20 48 E8 01076 VECKSM JSR WHEREI ; GET THE FILE E697 20 93 E9 01077 JSR INALL ; CHK OBJ OR SOURCE E69A C9 0D 01078 CMP #CR ; FIRST CHR IS (CR) IF OBJ E69C D0 0E 01079 BNE VECK2 ; ASSUME SOURCE CODE E69E 20 93 E9 01080 VECK1 JSR INALL ; OBJECT FILE E6A1 C9 3B 01081 CMP #';' E6A3 D0 F9 01082 BNE VECK1 ; IGNORE ALL CHARS BEFORE ';' E6A5 20 93 E9 01083 JSR INALL E6A8 4C 60 FF 01084 JMP PAT20 E6AB EA 01085 NOP E6AC 20 93 E9 01086 VECK2 JSR INALL ; IT IS TEXT E6AF C9 0D 01087 CMP #CR E6B1 D0 F9 01088 BNE VECK2 E6B3 20 93 E9 01089 JSR INALL ; NEED TWO (CR) TO FINISH E6B6 C9 0D 01090 CMP #CR E6B8 D0 F2 01091 BNE VECK2 E6BA 4C 20 E5 01092 JMP DU13 ; CLOSE FILE, IT IS OK 01093 01094 ; ***** 1 COMMAND-TOGGLE TAPE 1 CONTROL ***** E6BD AD 00 A8 01095 TOGTA1 LDA DRB E6C0 49 10 01096 EOR #$10 ; INVERT PB4 E6C2 8D 00 A8 01097 STA DRB E6C5 29 10 01098 AND #$10 E6C7 F0 28 01099 BEQ BRK3 ; IF 0 TAPE CNTRL IS ON E6C9 D0 2F 01100 BNE BRK4 ; IF $10 TAPE CNTRL IS OFF 01101 01102 ; ***** 2 COMMAND-TOGGLE TAPE 2 CONTROL E6CB AD 00 A8 01103 TOGTA2 LDA DRB E6CE 49 20 01104 EOR #$20 ; INVERT PB5 E6D0 8D 00 A8 01105 STA DRB E6D3 29 20 01106 AND #$20 E6D5 F0 1A 01107 BEQ BRK3 E6D7 D0 21 01108 BNE BRK4 01109 01110 ; ***** V COMMAND-TOGGLE REGISTER DISP FLG ***** 01111 ; DISPLAY REGIST BEFORE EXEC E6D9 A2 0E 01112 REGT LDX # $2C ,(CR)----> $01 E78C 8D 19 A4 01200 GCN1 STA COUNT E78F 60 01201 RTS 01202 01203 ; CHECK IF COUNT HAS REACHED ZERO 01204 ; COUNT=$2C MEANS FOREVER E790 AD 19 A4 01205 DONE LDA COUNT ; IF COUNT=0 WE ARE DONE E793 C9 2C 01206 CMP #$2C ; THIS MEANS FOREVER E795 F0 09 01207 BEQ DON1 ; SET ACC DIFF FROM ZERO E797 F8 01208 SED ; DECREMENT COUNT IN DECIMAL E798 38 01209 SEC E799 E9 01 01210 SBC #1 E79B D8 01211 CLD E79C 8D 19 A4 01212 STA COUNT E79F 60 01213 RTS E7A0 A9 2C 01214 DON1 LDA #$2C E7A2 60 01215 RTS 01216 E7A3 A0 00 01217 FROM LDY #0 ; PRINT 'FR=' E7A5 F0 02 01218 BEQ TO1 01219 E7A7 A0 05 01220 TO LDY #M3-M1 ; PRINT 'TO=' E7A9 20 AF E7 01221 TO1 JSR KEP E7AC 4C B1 EA 01222 JMP ADDNE ; GET ADDRESS 01223 01224 ; PRINT MSG POINTED TO BY Y REG E7AF B9 00 E0 01225 KEP LDA M1,Y E7B2 48 01226 PHA E7B3 29 7F 01227 AND #$7F ; STRIP OFF MSB E7B5 20 7A E9 01228 JSR OUTPUT E7B8 C8 01229 INY E7B9 68 01230 PLA E7BA 10 F3 01231 BPL KEP ; MSB =1 ? E7BC 60 01232 RTS 01233 01234 01235 ; PRINT '*' ,BUT NOT TO TAPE RECORDER, NOR LOADING.... 01236 ; PAPER TAPE OR TO DISPLAY E7BD AD 12 A4 01237 PROMPT LDA INFLG ; WHICH DEV (FOR EDITOR) E7C0 C9 54 01238 CMP #'T' ; NO PROMPT IF 'T' OR 'L' E7C2 4C EF FE 01239 JMP PATC11 E7C5 20 42 E8 01240 PROMP1 JSR TTYTST ; PROMPT ONLY TO TTY E7C8 D0 05 01241 BNE PR2 ; BRANCH ON KB E7CA A9 2A 01242 LDA #'*' E7CC 4C 7A E9 01243 PR1 JMP OUTPUT ; ONLY TO TERMIN E7CF A9 0D 01244 PR2 LDA #CR ; CLR DISP E7D1 4C 05 EF 01245 JMP OUTDIS 01246 E7D4 A9 3F 01247 QM LDA #'?' ; PRINT '?' E7D6 D0 F4 01248 BNE PR1 01249 E7D8 A9 3D 01250 EQUAL LDA #'=' ; PRINT '=' E7DA D0 F0 01251 BNE PR1 01252 ; ON DELETE KEY OUTPUT SLASH IF TTY & .... 01253 ; BACK UP CURSOR IF KB (MAY NEED SCROLLING) E7DC 20 42 E8 01254 PSLS JSR TTYTST ; TTY OR KB ? E7DF F0 56 01255 BEQ PSL1 ; BRANCH ON TTY E7E1 20 9E EB 01256 JSR PHXY ; SAVE X,Y E7E4 CE 15 A4 01257 DEC CURPO2 ; DECR DISP PNTR E7E7 AE 15 A4 01258 LDX CURPO2 E7EA E0 14 01259 CPX #20 ; IF MORE THAN 20 JUST SCROLL THEM E7EC B0 0D 01260 BCS PSL0 E7EE A9 20 01261 LDA #' ' ; < 20 ,SO CLR CUR E7F0 20 02 EF 01262 JSR OUTDP1 E7F3 CE 15 A4 01263 DEC CURPO2 E7F6 4C 02 E8 01264 JMP PSLO0 E7F9 EA 01265 NOP E7FA EA 01266 NOP E7FB 20 F8 FE 01267 PSL0 JSR PATC12 ; CLR PRIFLG E7FE CA 01268 DEX ; ONE CHR LESS E7FF 20 2F EF 01269 JSR OUTD2A ; SCROLL THEM E802 AD 15 A4 01270 PSLO0 LDA CURPO2 ; DISBUFF---> PRIBUFF E805 C9 15 01271 CMP #21 E807 90 13 01272 BCC PSLOB E809 C9 29 01273 CMP #41 E80B 90 07 01274 BCC PSLOA E80D A0 28 01275 LDY #40 ; CHR 40-59 E80F E9 28 01276 SBC #40 E811 4C 1E E8 01277 JMP PSLOC E814 A0 14 01278 PSLOA LDY #20 ; CHR 20-39 E816 38 01279 SEC E817 E9 14 01280 SBC #20 E819 4C 1E E8 01281 JMP PSLOC E81C A0 00 01282 PSLOB LDY #0 ; CHR 00-19 E81E 8D 16 A4 01283 PSLOC STA CURPOS E821 A2 00 01284 LDX #0 E823 B9 38 A4 01285 PSLOD LDA DIBUFF,Y ; TRANSFER THEM E826 9D 60 A4 01286 STA IBUFM,X E829 E8 01287 INX E82A C8 01288 INY E82B EC 16 A4 01289 CPX CURPOS ; PRI PNTR E82E 90 F3 01290 BCC PSLOD E830 20 38 F0 01291 JSR OUTPR ; CLR PRI BUFF TO THE RIGHT E833 20 AC EB 01292 JSR PLXY ; RESTORE X,Y E836 60 01293 RTS E837 A9 2F 01294 PSL1 LDA #'/' ; PRINT '/' E839 D0 91 01295 BNE PR1 01296 E83B 20 3E E8 01297 BLANK2 JSR BLANK ; TWO SPACE E83E A9 20 01298 BLANK LDA #' ' E840 D0 8A 01299 BNE PR1 01300 01301 ; CHECK TTY/KBD SWITCH (Z=1 FOR TTY) E842 A9 08 01302 TTYTST LDA #$08 ; CHECK IF TTY OR KB E844 2C 00 A8 01303 BIT DRB ; TTY OR KB SWITCH =PB3 E847 60 01304 RTS 01305 01306 ; WHERE IS INPUT COMING FROM? 01307 ; SET UP FOR INPUT ACTIVE DEVICE E848 A0 2A 01308 WHEREI LDY #M9-M1 ; PRINT 'IN' E84A 20 70 E9 01309 JSR KEPR ; OUTPUT MESSAGE AND INPUT CHR E84D 8D 12 A4 01310 STA INFLG E850 C9 54 01311 CMP #'T' E852 D0 08 01312 BNE WHE1 E854 A2 00 01313 LDX #0 ; FOR INPUT FILE FLG E856 20 A2 E8 01314 JSR FNAM ; OPEN FILE FOR TAPE (1 OR 2) E859 4C 2F E3 01315 JMP LOADTA ; GET FILE E85C C9 4B 01316 WHE1 CMP #'K' ; TAPE WITH KIM FORMAT E85E D0 08 01317 BNE WHE2 E860 A2 00 01318 LDX #0 ; FOR INPUT FILE FLG E862 20 A2 E8 01319 JSR FNAM ; OPEN FILE FOR TAP (1 OR 2) E865 4C A4 E3 01320 JMP LOADKI ; THE WHOLE FILE E868 C9 55 01321 WHE2 CMP #'U' ; USER RTN? E86A D0 04 01322 BNE WHE3 E86C 18 01323 CLC ; SET FLAG FOR INITIALIZATION E86D 6C 08 01 01324 JMP [UIN] ; USER INPUT SETUP E870 60 01325 WHE3 RTS 01326 01327 ; WHERE IS OUTPUT GOING TO? 01328 ; SET UP FOR OUTPUT ACTIVE DEVICE E871 A0 2D 01329 WHEREO LDY #M10-M1 ; PRINT 'OUT' E873 20 70 E9 01330 JSR KEPR ; OUTPUT MSG & INPUT CHR E876 8D 13 A4 01331 STA OUTFLG ; DEVICE FLG 01332 ; TAPES E879 C9 54 01333 CMP #'T' E87B D0 08 01334 BNE WHRO1 E87D A2 01 01335 LDX #1 ; FOR OUTPUT FILE FLG E87F 20 A2 E8 01336 JSR FNAM ; FILENAME & TAPE (1 OR 2) E882 4C 6F E5 01337 JMP DUMPTA ; INITIALZE FILE E885 C9 4B 01338 WHRO1 CMP #'K' ; TAPE WITH KIM FORMAT E887 D0 05 01339 BNE WHRO2 E889 A2 01 01340 LDX #1 ; FOR OUTPUT FILE FLG E88B 4C A2 E8 01341 JMP FNAM 01342 ; PRINTER E88E C9 50 01343 WHRO2 CMP #'P' ; PRINTER? E890 D0 05 01344 BNE WHRO3 E892 A9 0D 01345 LDA #CR ; OUTPUT LAST LIEN IF ON E894 4C 00 F0 01346 JMP OUTPRI ; & CLEAR PRINTER PTR 01347 ; USER SET UP E897 C9 55 01348 WHRO3 CMP #'U' ; USER RTN? E899 D0 04 01349 BNE WHRO4 E89B 18 01350 CLC ; CLR FLG FOR INITIALIZATION E89C 6C 0A 01 01351 JMP [UOUT] ; USER OUTPUT SETUP 01352 ; ANY OTHER E89F 4C 13 EA 01353 WHRO4 JMP CRLOW 01354 01355 ; GET FILE NAME & TAPE UNIT E8A2 20 9E EB 01356 FNAM JSR PHXY ; SAVE IN/OUT FLG (X) E8A5 20 CF E8 01357 JSR NAMO ; GET NAME E8A8 A0 50 01358 WHICHT LDY #TMSG2-M1 ; PRINT 'T=' E8AA 20 70 E9 01359 JSR KEPR ; OUTPUT MSG & INPUT CHR E8AD C9 0D 01360 CMP #CR E8AF D0 02 01361 BNE TAP1 E8B1 A9 31 01362 LDA #$31 ; (CR) ==> TAPE 1 E8B3 38 01363 TAP1 SEC E8B4 E9 31 01364 SBC #$31 ; SUBTRACT 31 E8B6 30 04 01365 BMI TAP2 ; ONLY 1,2 OK E8B8 C9 02 01366 CMP #2 E8BA 30 06 01367 BMI TAP3 ; OK E8BC 20 D4 E7 01368 TAP2 JSR QM ; ERROR E8BF 4C A8 E8 01369 JMP WHICHT E8C2 20 AC EB 01370 TAP3 JSR PLXY ; IN/OUT FLG E8C5 9D 34 A4 01371 STA TAPIN,X ; IF X=0 -->TAPIN (TAPE 1 OR 2) E8C8 20 83 FE 01372 JSR CUREAD ; GET ANYTHING E8CB 20 24 EA 01373 JSR CRCK ; (CR) E8CE 60 01374 RTS ; IF X=1 -->TAPOUT (TAPE 1 OR 2) 01375 01376 ; GET FILE NAME E8CF A0 4D 01377 NAMO LDY #TMSG1-M1 ; PRINT 'F=' E8D1 20 AF E7 01378 JSR KEP ; NO CRLF E8D4 A0 00 01379 LDY #0 E8D6 20 5F E9 01380 NAMO1 JSR RDRUB ; GET CHAR E8D9 C9 0D 01381 CMP #CR ; DONE? E8DB F0 0C 01382 BEQ NAMO2 E8DD C9 20 01383 CMP #' ' E8DF F0 08 01384 BEQ NAMO2 E8E1 99 2E A4 01385 STA NAME,Y ; STORE E8E4 C8 01386 INY E8E5 C0 05 01387 CPY #5 E8E7 D0 ED 01388 BNE NAMO1 01389 ; BLANK REST OF NAME E8E9 A9 20 01390 NAMO2 LDA #' ' E8EB C0 05 01391 NAMO3 CPY #5 E8ED F0 06 01392 BEQ NAMO4 E8EF 99 2E A4 01393 STA NAME,Y E8F2 C8 01394 INY E8F3 D0 F6 01395 BNE NAMO3 E8F5 4C 3E E8 01396 NAMO4 JMP BLANK 01397 01398 ; SET INPUT FROM TERMINAL (KB OR TTY) E8F8 A9 0D 01399 INLOW LDA #CR E8FA 8D 12 A4 01400 STA INFLG E8FD 60 01401 RTS 01402 01403 ; SET I/O TO TERMINAL (KB & D/P ,OR TTY) E8FE 20 F8 E8 01404 LL JSR INLOW 01405 01406 ; SET OUTPUT TO TERMINAL (D/P OR TTY) E901 A9 0D 01407 OUTLOW LDA #CR E903 8D 13 A4 01408 STA OUTFLG E906 60 01409 OUTL1 RTS 01410 01411 ; ON (ESCAPE) STOPS EXECUTION & BACK TO MONITOR 01412 ; ON (SPACE) STOPS EXECUTION & CONTINUE ON ANY OTHER KEY E907 20 42 E8 01413 RCHEK JSR TTYTST ; TTY OR KB ? E90A F0 1A 01414 BEQ RCHTTY E90C 20 EF EC 01415 JSR ROONEK ; CKR MSK & GET A KEY E90F 88 01416 DEY E910 30 13 01417 BMI RCH3 ; RTN ON NO KEY E912 A2 00 01418 LDX #0 E914 20 82 EC 01419 JSR GETK2 ; GET THE KEY E917 C9 1B 01420 CMP #ESCAPE E919 F0 3B 01421 BEQ REA1 ; TO COMMAN & SET I/O TO TERMINAL E91B C9 20 01422 CMP #' ' ; WAIT KEY E91D D0 06 01423 BNE RCH3 ; RTN, IGNORE OTHER KEYS E91F 20 EF EC 01424 RCH2 JSR ROONEK ; WAIT TILL HE RELEASES IT & E922 88 01425 DEY ; QUIT WAITING ON NEXT KEY E923 30 FA 01426 BMI RCH2 E925 60 01427 RCH3 RTS E926 70 13 01428 RCHTTY BVS RCHT1 ; TTI=PB6 ---> V (OVERFL FLG) E928 2C 00 A8 01429 RCHT2 BIT DRB ; WAIT TILL HE RELEASE IT E92B 50 FB 01430 BVC RCHT2 E92D 20 0F EC 01431 JSR DELAY E930 20 DB EB 01432 JSR GETTTY ; GET A CHAR E933 C9 1B 01433 CMP #ESCAPE E935 F0 1F 01434 BEQ REA1 ; TO COMMAN E937 C9 20 01435 CMP #' ' E939 D0 ED 01436 BNE RCHT2 E93B 60 01437 RCHT1 RTS ; QUIT WAITING ON ANY KEY 01438 01439 ; READ ONE CHAR FROM KB/TTY AND PRESERVE X,Y E93C 20 9E EB 01440 READ JSR PHXY ; PUSH X & Y E93F 20 42 E8 01441 JSR TTYTST ; TTY OR KB ? E942 D0 06 01442 BNE READ1 E944 20 DB EB 01443 JSR GETTTY E947 4C 4D E9 01444 JMP READ2 E94A 20 40 EC 01445 READ1 JSR GETKEY E94D 20 AC EB 01446 READ2 JSR PLXY ; PULL X & Y E950 29 7F 01447 AND #$7F ; STRIP PARITY E952 C9 1B 01448 CMP #ESCAPE E954 D0 E5 01449 BNE RCHT1 ; RTN E956 20 3D FF 01450 REA1 JSR PATC18 ; (CR) AND CLR BUFFERS E959 4C A1 E1 01451 JMP COMIN ; BOTH I/O TO TERMINAL 01452 01453 ; READ WITH RUBOUT OR DELETE POSSIBLE E95C 20 DC E7 01454 RB2 JSR PSLS ; SLASH OR BACK SPACE E95F 20 83 FE 01455 RDRUB JSR CUREAD E962 C9 08 01456 CMP #RUB ; RUBOUT E964 F0 04 01457 BEQ RDR1 E966 C9 7F 01458 CMP #$7F ; ALSO DELETE E968 D0 0C 01459 BNE RED2 ; ECHO IF NOT (CR) 01460 ; RUBOUT TO DELETE CHAR E96A 88 01461 RDR1 DEY E96B 10 EF 01462 BPL RB2 E96D C8 01463 INY E96E F0 EF 01464 BEQ RDRUB 01465 01466 ; OUTPUT MESSAGE THEN INPUT CHR E970 20 AF E7 01467 KEPR JSR KEP 01468 01469 ; READ AND ECHO A CHAR FROM KB OR TTY E973 20 83 FE 01470 REDOUT JSR CUREAD E976 C9 0D 01471 RED2 CMP #CR E978 F0 C1 01472 BEQ RCHT1 ; DO NOT ECHO (CR) 01473 01474 ; OUTPUTS A CHAR TO EITHER TTY OR D/P E97A 48 01475 OUTPUT PHA ; SAVE IT E97B AD 11 A4 01476 OUT1 LDA PRIFLG ; IF LSB=1 OUTPUT ONLT TO DISP E97E 29 01 01477 AND #$01 E980 F0 04 01478 BEQ OUT1A E982 68 01479 PLA E983 4C 02 EF 01480 JMP OUTDP1 ; ONLY TO DISPL E986 20 42 E8 01481 OUT1A JSR TTYTST ; TTY OR KB ? E989 D0 04 01482 BNE OUT2 E98B 68 01483 PLA E98C 4C A8 EE 01484 JMP OUTTTY ; TO TTY E98F 68 01485 OUT2 PLA E990 4C FC EE 01486 JMP OUTDP ; TO DISP & PRINTR 01487 01488 ; GET A CHAR FORM CURRENT INPUT DEVICE (SET ON INFL) E993 AD 12 A4 01489 INALL LDA INFLG E996 C9 54 01490 CMP #'T' E998 D0 03 01491 BNE *+5 E99A 4C 3B ED 01492 JMP TIBYTE ; CHAR FROM BUFFER E99D C9 4B 01493 CMP #'K' ; WITH KIM FORMAT E99F D0 03 01494 BNE *+5 E9A1 4C 29 EE 01495 JMP GETTAP ; DIRECTLY FROM TAPE E9A4 C9 4D 01496 CMP #'M' ; MEMORY FOR ASM? E9A6 D0 03 01497 BNE *+5 E9A8 4C D0 FA 01498 JMP MREAD E9AB C9 55 01499 CMP #'U' ; USER ROUTINE? E9AD D0 04 01500 BNE *+6 E9AF 38 01501 SEC ; SET FLG FOR NORMAL INPUT E9B0 6C 08 01 01502 JMP [UIN] E9B3 C9 4C 01503 CMP #'L' ; TO LOAD PPR TAPE E9B5 D0 A8 01504 BNE RDRUB E9B7 4C DB EB 01505 JMP GETTTY ; FROM TTY 01506 01507 ; .FILE A2 E9BA A9 3B 01508 SEMI LDA #';' ; OUTPUT A ';' 01509 ; WRITE A CHR TO OUTPUT DEVICE (SET ON OUTFLG) E9BC 48 01510 OUTALL PHA E9BD AD 13 A4 01511 LDA OUTFLG 01512 ; TAPE BY BLOCKS E9C0 C9 54 01513 CMP #'T' ; TAPES ? E9C2 D0 04 01514 BNE OUTA1 E9C4 68 01515 PLA E9C5 4C 8B F1 01516 JMP TOBYTE ; OUTPUT ONE CHAR TO TAPE BUFFER 01517 ; TAPE KIM FORMAT E9C8 C9 4B 01518 OUTA1 CMP #'K' ; KIM-1 ? E9CA D0 04 01519 BNE OUTA2 E9CC 68 01520 PLA E9CD 4C 4A F2 01521 JMP OUTTAP 01522 ; PRINTER E9D0 C9 50 01523 OUTA2 CMP #'P' ; PRINTER ? E9D2 D0 0E 01524 BNE OUTA3 E9D4 38 01525 SEC ; TURN PRINTR ON E9D5 6E 11 A4 01526 ROR PRIFLG E9D8 68 01527 PLA E9D9 08 01528 PHP E9DA 20 00 F0 01529 JSR OUTPRI E9DD 28 01530 PLP E9DE 2E 11 A4 01531 ROL PRIFLG ; RESTORE FLG E9E1 60 01532 RTS 01533 ; USER DEFINED E9E2 C9 55 01534 OUTA3 CMP #'U' ; USER ROUTINE? E9E4 D0 04 01535 BNE OUTA4 E9E6 38 01536 SEC ; SET FLG FOR NORMAL OUTPUT E9E7 6C 0A 01 01537 JMP [UOUT] ; YES 01538 ; NOWHERE OR TO TTY ,D/P E9EA C9 58 01539 OUTA4 CMP #'X' ; EAT IT? E9EC D0 8D 01540 BNE OUT1 ; OUTPUT TO TTY OR D/P E9EE 68 01541 PLA E9EF 60 01542 RTS 01543 01544 ; THIS ROUTINE OUPTUTS A CRLF TO ANY OUTPUT DEV 01545 ; LF AND NULL IS SENT ONLY TO TTY E9F0 A9 0D 01546 CRLF LDA #CR E9F2 20 BC E9 01547 JSR OUTALL E9F5 20 42 E8 01548 JSR TTYTST ; TTY OR KB ? E9F8 D0 29 01549 BNE CR2J E9FA AD 13 A4 01550 LDA OUTFLG ; LF ONLY TO TTY E9FD C9 54 01551 CMP #'T' E9FF F0 22 01552 BEQ CR2J EA01 C9 4B 01553 CMP #'K' EA03 F0 1E 01554 BEQ CR2J EA05 C9 50 01555 CMP #'P' EA07 F0 1A 01556 BEQ CR2J EA09 A9 0A 01557 LDA #LF EA0B 20 BC E9 01558 JSR OUTALL EA0E A9 FF 01559 LDA #NULLC EA10 4C BC E9 01560 JMP OUTALL 01561 01562 ; CRLF TO TERMINAL (TTY OR D/P) ONLY EA13 48 01563 CRLOW PHA ; SAVE A EA14 AD 13 A4 01564 LDA OUTFLG EA17 48 01565 PHA EA18 20 01 E9 01566 JSR OUTLOW EA1B 20 F0 E9 01567 JSR CRLF EA1E 68 01568 PLA EA1F 8D 13 A4 01569 STA OUTFLG EA22 68 01570 PLA EA23 60 01571 CR2J RTS 01572 01573 ; OUTPUT (CR) TO TTY IF SWITHC ON TTY & INFLG NOT L 01574 ; DONT CLR DISPLAY BUT CLEARS PNTRS FOR NEXT LINE 01575 ; IF PRNTR HAS PRINTED ON 21RST CHR DONT OUTPUT (CR) EA24 AD 12 A4 01576 CRCK LDA INFLG ; NO (CR) IF 'L' EA27 C9 4C 01577 CMP #'L' EA29 D0 01 01578 BNE CRCK1 EA2B 60 01579 RTS EA2C 20 42 E8 01580 CRCK1 JSR TTYTST ; CHECK IF TTY OR KB EA2F F0 E2 01581 BEQ CRLOW ; BRANCH IF TTY 01582 ; IF PRINTR PTR=0 ,DO NOT CLR PRI EA31 AD 16 A4 01583 LDA CURPOS EA34 F0 05 01584 BEQ CRCK2 ; IF PTR=0 ,NO (CR) EA36 A9 0D 01585 LDA #CR EA38 20 00 F0 01586 JSR OUTPRI EA3B A9 8D 01587 CRCK2 LDA #$8D ; (CR) ONLY FOR TV EA3D 4C 02 EF 01588 JMP OUTDP1 EA40 EA 01589 NOP EA41 EA 01590 NOP 01591 01592 ; WRITE A THEN X IN ASCII TO THE OUTPUT DEV EA42 20 46 EA 01593 WRAX JSR NUMA EA45 8A 01594 TXA 01595 01596 ; PRINT ONE BYTE=TWO ASCII CHARS TO OUTPUT DEVICE EA46 48 01597 NUMA PHA EA47 4A 01598 LSR A EA48 4A 01599 LSR A EA49 4A 01600 LSR A EA4A 4A 01601 LSR A EA4B 20 51 EA 01602 JSR NOUT EA4E 68 01603 PLA EA4F 29 0F 01604 AND #$F EA51 18 01605 NOUT CLC EA52 69 30 01606 ADC #$30 EA54 C9 3A 01607 CMP #$3A EA56 90 02 01608 BCC LT10 EA58 69 06 01609 ADC #6 ; CARRY IS SET EA5A 4C BC E9 01610 LT10 JMP OUTALL 01611 01612 ; READ TWO CHR & PACK THEM INTO ONE BYTE 01613 ; PART OF ALTER MEMORY , / COMM EA5D 20 73 E9 01614 RD2 JSR REDOUT EA60 C9 0D 01615 CMP #$D ; (CR)? EA62 F0 17 01616 BEQ RSPAC EA64 C9 20 01617 CMP #' ' ; FOR MEMORY ALTER EA66 F0 13 01618 BEQ RSPAC EA68 C9 2E 01619 CMP #'.' ; TREAT '.' AS (SPACE) EA6A D0 04 01620 BNE RD1 EA6C A9 20 01621 LDA #$20 EA6E D0 0B 01622 BNE RSPAC EA70 20 84 EA 01623 RD1 JSR PACK EA73 B0 06 01624 BCS RSPAC EA75 20 73 E9 01625 JSR REDOUT EA78 4C 84 EA 01626 JMP PACK 01627 ; WAS SPACE OR (CR) EA7B 38 01628 RSPAC SEC EA7C 60 01629 RTS 01630 01631 ; CONVERT ACC IN ASCII TO ACC IN HEX (4 MSB=0) EA7D 48 01632 HEX PHA ; SAVE A EA7E A9 00 01633 LDA #0 ; CLEAR STIY IF HEX EA80 8D 29 A4 01634 STA STIY+2 ; BECAUSE ONLY ONCE EA83 68 01635 PLA 01636 ; PACK TWO ASCII INTO ONE HEX (CALL SUBR TWO TIMES) 01637 ; RESULT IS GIVEN ON ACC WITH FIRST CHR INTO 4 MSB EA84 C9 30 01638 PACK CMP #$30 ; < 30 ? EA86 90 F3 01639 BCC RSPAC EA88 C9 47 01640 CMP #$47 ; > 47 ? EA8A B0 EF 01641 BCS RSPAC EA8C C9 3A 01642 CMP #$3A ; < #10 EA8E 90 06 01643 BCC PAK1 EA90 C9 40 01644 CMP #$40 ; > #10 ? EA92 90 E7 01645 BCC RSPAC EA94 69 08 01646 ADC #8 ; ADD 0 IS LETTER (C IS SET) EA96 2A 01647 PAK1 ROL A ; SHIFT A 4 TIMES EA97 2A 01648 ROL A EA98 2A 01649 ROL A EA99 2A 01650 ROL A EA9A 8E 2D A4 01651 STX CPIY+3 ; SAVE X EA9D A2 04 01652 LDX #4 EA9F 2A 01653 PAK2 ROL A ; TRANSFER A TO STIY EAA0 2E 29 A4 01654 ROL STIY+2 ; THRU CARRY EAA3 CA 01655 DEX EAA4 D0 F9 01656 BNE PAK2 EAA6 AE 2D A4 01657 LDX CPIY+3 ; REST X EAA9 AD 29 A4 01658 LDA STIY+2 EAAC 18 01659 CLC EAAD 60 01660 RTS 01661 01662 ; GET FOUR BYTE ADDR ,TAKE LAST FOUR CHR TO.... 01663 ; CALCULATE ADDR ALLOW DELETE ALSO EAAE 20 D8 E7 01664 ADDIN JSR EQUAL EAB1 AD 15 A4 01665 ADDNE LDA CURPO2 ; SAVE POSITION EAB4 48 01666 PHA EAB5 A0 00 01667 LDY #0 EAB7 20 5F E9 01668 ADDN1 JSR RDRUB EABA C9 0D 01669 CMP #CR EABC F0 09 01670 BEQ ADDN2 EABE C9 20 01671 CMP #' ' EAC0 F0 05 01672 BEQ ADDN2 EAC2 C8 01673 INY EAC3 C0 0B 01674 CPY #11 ; ALLOW 10 EAC5 90 F0 01675 BCC ADDN1 EAC7 68 01676 ADDN2 PLA EAC8 8D 2D A4 01677 STA CPIY+3 ; SAVE EACB C0 00 01678 CPY #0 ; IF FIRST CHR PUT DEFAULT VALUES EACD D0 0D 01679 BNE ADDN3 EACF A9 02 01680 LDA #$02 EAD1 8D 1D A4 01681 STA ADDR+1 ; DEFAULT OF 0200 EAD4 8D 1E A4 01682 STA CKSUM ; DEFAULT EAD7 8C 1C A4 01683 STY ADDR EADA 18 01684 CLC EADB 60 01685 RTS EADC A2 00 01686 ADDN3 LDX #0 EADE 88 01687 DEY ; Y-4 EADF 88 01688 DEY EAE0 88 01689 DEY EAE1 88 01690 DEY EAE2 10 13 01691 BPL ADDN5 ; BRANCH IF > 4 CHR EAE4 98 01692 TYA EAE5 49 FF 01693 EOR #$FF EAE7 A8 01694 TAY ; # OF LEADING 0 EAE8 A9 30 01695 ADDN4 LDA #$30 EAEA 9D 1C A4 01696 STA ADDR,X EAED E8 01697 INX EAEE 88 01698 DEY EAEF 10 F7 01699 BPL ADDN4 EAF1 AC 2D A4 01700 LDY CPIY+3 ; NOW THE CHR EAF4 4C FD EA 01701 JMP ADDN6 EAF7 98 01702 ADDN5 TYA ; PUT CHR EAF8 18 01703 CLC EAF9 6D 2D A4 01704 ADC CPIY+3 EAFC A8 01705 TAY EAFD B9 38 A4 01706 ADDN6 LDA DIBUFF,Y ; FROM DISP BUFF EB00 9D 1C A4 01707 STA ADDR,X EB03 C8 01708 INY EB04 E8 01709 INX EB05 E0 04 01710 CPX #4 EB07 D0 F4 01711 BNE ADDN6 EB09 A2 01 01712 LDX #1 EB0B A0 00 01713 LDY #0 ; CNVRT CHR TO HEX EB0D B9 1C A4 01714 ADDN7 LDA ADDR,Y EB10 20 7D EA 01715 JSR HEX EB13 B0 16 01716 BCS ADDN8 EB15 C8 01717 INY EB16 B9 1C A4 01718 LDA ADDR,Y EB19 C8 01719 INY EB1A 20 84 EA 01720 JSR PACK ; PACK TWO CHRS INTO 1 BYTE EB1D B0 0C 01721 BCS ADDN8 ; BRCNH IF ERROR EB1F 9D 1C A4 01722 STA ADDR,X EB22 CA 01723 DEX EB23 10 E8 01724 BPL ADDN7 EB25 E8 01725 INX ; X=0 EB26 8E 1E A4 01726 STX CKSUM ; TO INDICATE WE GOT AN ADDR EB29 18 01727 CLC ; NO INVALID CHARS EB2A 60 01728 RTS EB2B 20 94 E3 01729 ADDN8 JSR CKERO0 ; OUTPUT ERROR MSG EB2E 20 24 EA 01730 JSR CRCK ; (CR) EB31 38 01731 SEC ; SET CARYY FOR INVALID CHR EB32 60 01732 RTS 01733 01734 ; MEMORY FAIL TO WRITE MSG & SPECIFIC ADDRESS EB33 20 24 EA 01735 MEMERR JSR CRCK EB36 20 CD E2 01736 JSR NXTADD ; ADD Y TO ADDR+1,ADDR EB39 A0 31 01737 LDY #M11-M1 ; PRINT 'MEM FAIL' EB3B 20 AF E7 01738 JSR KEP ; FAIL MSG EB3E 20 DB E2 01739 JSR WRITAZ ; PRINT ADDR+1 , ADDR EB41 4C A1 E1 01740 JMP COMIN 01741 01742 ; CLEAR DISPLAY & PRINTER POINTERS EB44 A9 00 01743 CLR LDA #0 EB46 8D 15 A4 01744 STA CURPO2 ; DISP PNTR EB49 8D 16 A4 01745 STA CURPOS ; PRINTR PNTR EB4C 60 01746 RTS 01747 01748 ; CLEAR CKSUM EB4D A9 00 01749 CLRCK LDA #0 EB4F 8D 1F A4 01750 STA CKSUM+1 EB52 8D 1E A4 01751 STA CKSUM EB55 60 01752 RTS 01753 01754 ; CODE FOR PAGE ZERO SIMULTAION 01755 ; SUBR LDAY-SIMULATES LDA (N),Y INSTR WITHOUT PAG 0 01756 ; BY PUTTING INDIRECT ADDR INTO RAM & THEN EXEC LDA NM,Y EB56 A9 25 01757 PCLLD LDA #V EBE5 70 FB 01839 BVS GET1 ; WAIT FOR START BIT EBE7 20 0F EC 01840 JSR DELAY ; DELAY ONE BIT EBEA 20 23 EC 01841 JSR DEHALF ; DELAY 1/2 BIT TIME EBED AD 00 A8 01842 GET3 LDA DRB ; GET 8 BITS EBF0 29 40 01843 AND #$40 ; MASK OFF OTHE RBITS,ONLY PB6 EBF2 4E 2A A4 01844 LSR CPIY ; SHIFT RIGHT CHARACTER EBF5 0D 2A A4 01845 ORA CPIY EBF8 8D 2A A4 01846 STA CPIY EBFB 20 0F EC 01847 JSR DELAY ; DELAY 1 BIT TIME EBFE CA 01848 DEX EBFF D0 EC 01849 BNE GET3 ; GET NEXT BIT EC01 20 0F EC 01850 JSR DELAY ; DO NOT CARE FOR PARITY BIT EC04 20 23 EC 01851 JSR DEHALF ; UNTIL WE GET BACK TO ONE AGAIN EC07 68 01852 PLA ; RESTORE X EC08 AA 01853 TAX EC09 AD 2A A4 01854 LDA CPIY EC0C 29 7F 01855 AND #$7F ; CLEAR PARITY BIT EC0E 60 01856 RTS 01857 01858 ; DELAY 1 BIT TIME AS GIEN BY BAUD RATE EC0F AD 18 A4 01859 DELAY LDA CNTL30 ; START TIMER T2 EC12 8D 08 A8 01860 STA T2L EC15 AD 17 A4 01861 LDA CNTH30 EC18 8D 09 A8 01862 DE1 STA T2H EC1B AD 0D A8 01863 DE2 LDA IFR ; GET INT FLG FOR T2 EC1E 29 20 01864 AND #MT2 EC20 F0 F9 01865 BEQ DE2 ; TIME OUT ? EC22 60 01866 RTS 01867 01868 ; DELAY HALF BIT TIME 01869 ; TOTLA TIME DIVIDED BY 2 EC23 AD 17 A4 01870 DEHALF LDA CNTH30 EC26 4A 01871 LSR A ; LSB TO CARRY EC27 AD 18 A4 01872 LDA CNTL30 EC2A 6A 01873 ROR A ; SHIFT WITH CARRY EC2B 8D 08 A8 01874 STA T2L EC2E AD 17 A4 01875 LDA CNTH30 EC31 4A 01876 LSR A EC32 8D 09 A8 01877 STA T2H EC35 4C 1B EC 01878 JMP DE2 01879 01880 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; EC38 A9 00 01881 GETKDO LDA #0 EC3A 8D 77 A4 01882 STA IDOT ; GO ANOTHER 90 DOTS EC3D 20 50 F0 01883 JSR IPO0 ; OUTPUT 90 DOTS TO PRI (ZEROS) 01884 01885 ; GET CHAR FROM KB SUBROUTINE 01886 ; FROM KB Y=ROW ,STBKEY=COLUMNS (STROBE) 01887 ; X=CTRL OR SHIFT ,OTHERWISE X=0 EC40 20 EF EC 01888 GETKEY JSR ROONEK ; WAIT IF LAST KEY STILL DOWN EC43 20 2A ED 01889 GETKY JSR DEBKEY ; DEBOUNCE KEY (5 MSEC) 01890 ; CTRL OR SHIFT ? EC46 A9 8F 01891 LDA #$8F ; CHCK CLMN 5,6,7 EC48 8D 80 A4 01892 STA DRA2 EC4B AD 82 A4 01893 LDA DRB2 ; CHCK ROW 1 EC4E 4A 01894 LSR A EC4F B0 20 01895 BCS GETK1 ; IF=1 ,NO CTRL OR SHIFT EC51 A2 03 01896 LDX #3 ; CLMN 5,6,7 (CNTRL,SHIFTL,SHIFTR) EC53 A9 7F 01897 LDA #$7F ; CTRL OR SHIFT ,SO WHICH ONE ? EC55 38 01898 GETKO SEC EC56 6A 01899 ROR A EC57 48 01900 PHA EC58 20 0B ED 01901 JSR ONEK2 ; LETS GET CTRL OR SHIFT INTO X EC5B AD 82 A4 01902 LDA DRB2 EC5E 4A 01903 LSR A ; ONLY 1 ROW EC5F 90 06 01904 BCC GETKOO ; GOT YOU EC61 68 01905 PLA EC62 CA 01906 DEX EC63 D0 F0 01907 BNE GETKO EC65 F0 DC 01908 BEQ GETKY ; THERE IS A MISTAKE CHECK AGAIN EC67 68 01909 GETKOO PLA ; NOW GET STBKEY INTO X EC68 AD 2B A4 01910 LDA STBKEY ; CLMN INTO X EC6B 49 FF 01911 EOR #$FF ; COMPLEMENT BECAUSE STRBS ARE 0 EC6D AA 01912 TAX ; CTRL OR SIFT TO X EC6E EE 2A A4 01913 INC KMASK ; SET MASK=$01 01914 ; NOW GET ANY KEY EC71 20 05 ED 01915 GETK1 JSR ONEKEY ; GET A KEY EC74 88 01916 DEY ; CHK THE ROW (1-8) EC75 D0 09 01917 BNE GETK1B ; CHCK IF CTRL OR SHIFT EC77 AD 2B A4 01918 LDA STBKEY ; WERE ENTERED AT THE LAST MOMENT EC7A C9 F7 01919 CMP #$F7 ; IF CLMN 5,6,7,8 DO IT AGAIN EC7C B0 04 01920 BCS GETK2 EC7E 90 C3 01921 BCC GETKY ; SEND IT TO GET CTRL OR SHIFT EC80 30 C1 01922 GETK1B BMI GETKY ; NO KEY ,CLEAR MSK 01923 ; WE HAVE A KEY ,DECODE IT EC82 20 2C ED 01924 GETK2 JSR DEBK1 ; DEBOUNCE KEY (5 MSEC) EC85 98 01925 TYA ; MULT BY 8 EC86 0A 01926 ASL A EC87 0A 01927 ASL A EC88 0A 01928 ASL A EC89 A8 01929 TAY ; NOW Y HAS ROW ADDR FROM ROW 1 EC8A AD 2B A4 01930 LDA STBKEY ; ADD COLUMN TO Y EC8D 4A 01931 GETK3 LSR A EC8E 90 03 01932 BCC GETK4 EC90 C8 01933 INY EC91 D0 FA 01934 BNE GETK3 EC93 B9 21 F4 01935 GETK4 LDA ROW1,Y ; GET THE CHR EC96 48 01936 PHA EC97 8A 01937 TXA ; SEE IF CTRL OR SHIFT WAS USED EC98 F0 24 01938 BEQ GETK7 ; BRCH IF NO CTRL OR SHIFT EC9A 29 10 01939 AND #$10 ; CTRL ? EC9C F0 06 01940 BEQ GETK5 ; NO ,GO GETK5 EC9E 68 01941 PLA EC9F 29 3F 01942 AND #$3F ; MSK OFF 2 MSB FRO CONTROL ECA1 4C BF EC 01943 JMP GETK8 ; EXIT ECA4 68 01944 GETK5 PLA ECA5 48 01945 PHA ; SAVE IT ECA6 29 40 01946 AND #$40 ; IF ALPHA CHARS DO NOT SHIFT ECA8 D0 14 01947 BNE GETK7 ECAA 68 01948 PLA ECAB 48 01949 PHA ECAC 29 0F 01950 AND #$0F ; ONLY LSB ECAE F0 0E 01951 BEQ GETK7 ; DO NOT INTERCHANGE (SPACE) OR 0 ECB0 C9 0C 01952 CMP #$0C ; ACC>=$0C ? ECB2 B0 05 01953 BCS GETK6 ; YES ACC>=$0C ECB4 68 01954 PLA ; NO, ACC<$0C ECB5 29 EF 01955 AND #$EF ; STRIP OFF BIT 4 ECB7 D0 06 01956 BNE GETK8 ; EXIT ECB9 68 01957 GETK6 PLA ; ACC>=$0C ECBA 09 10 01958 ORA #$10 ; BIT 4= 1 ECBC D0 01 01959 BNE GETK8 ; EXIT ECBE 68 01960 GETK7 PLA 01961 ; CHECK FOR 'ADV PAP', "PRI LINE", OR "TOGL PRIFLG" 01962 ; IN THIS WAY WE DONT HAVE TO CHCK FOR THIS COMM ECBF C9 60 01963 GETK8 CMP #$60 ; ADV PAPER COMM ECC1 D0 06 01964 BNE GETK11 ECC3 E0 00 01965 CPX #0 ; IF SHIFT IS NOT ADV PAPER ECC5 F0 25 01966 BEQ GETK10 ; NO SHIFT ,SO ADV PAPER ECC7 29 4F 01967 AND #$4F ; CONVERT TO "@" ECC9 C9 1C 01968 GETK11 CMP #$1C ; SEE IF TOGGL PRIFLG (CONTROL PRI) ECCB D0 14 01969 BNE GETK13 ECCD 20 E1 E6 01970 JSR PRITR ; GO TOGGLE FLG ECD0 A0 01 01971 LDY #1 ; GET THE PTRS BACK 3 SPACES ECD2 B9 15 A4 01972 GETK12 LDA CURPO2,Y ECD5 38 01973 SEC ECD6 E9 03 01974 SBC #3 ; BECAUSE 'ON ,OFF' MSGS ECD8 99 15 A4 01975 STA CURPO2,Y ECDB 88 01976 DEY ECDC 10 F4 01977 BPL GETK12 ECDE 4C 40 EC 01978 JMP GETKEY ECE1 C9 5C 01979 GETK13 CMP #'\\' ; PRINT LINE COMMAND ECE3 D0 06 01980 BNE GETK14 ECE5 20 4A F0 01981 JSR IPSO ; PRINT WHATEVER IS IN BUFFER ECE8 4C 40 EC 01982 JMP GETKEY ECEB 60 01983 GETK14 RTS ECEC 4C 38 EC 01984 GETK10 JMP GETKDO 01985 01986 ; WAIT IF LAST KEY STILL DOWN (ROLLOVER) ECEF AD 82 A4 01987 ROONEK LDA DRB2 ; SEE IF KEY STILL DOWN ECF2 C9 FF 01988 CMP #$FF ECF4 F0 0A 01989 BEQ R001 ; NO KEY AT ALL, CLR ROLLFL ECF6 0D 7F A4 01990 ORA ROLLFL ; ACCEPT ONLY LAST KEY ECF9 49 FF 01991 EOR #$FF ; STRBS ARE ZERO SO INER ECFB D0 F2 01992 BNE ROONEK ECFD 20 2A ED 01993 JSR DEBKEY ; CLR KMASK & DEBOUNCE RELEASE ED00 A9 00 01994 R001 LDA #0 ; CLR KMASK ED02 8D 2A A4 01995 STA KMASK 01996 ; GO THRU KB ONCE AND RTN ,IF ANY 01997 ; KEY Y=ROW (1-8) & STRBKEY=CLMN 01998 ; IF NO KEY Y=0 ,STBKEY=$FF ED05 A9 7F 01999 ONEKEY LDA #$7F ; FISRT STROBE TO MSB ED07 D0 02 02000 BNE ONEK2 ; START AT ONEK2 ED09 38 02001 ONEK1 SEC ; ONLY ONE PULSE (ZERO) ED0A 6A 02002 ROR A ; SHIFT TO RIGHT ED0B 8D 80 A4 02003 ONEK2 STA DRA2 ; OUTPUT CLMN STROBE ED0E 8D 2B A4 02004 STA STBKEY ; SAVE IT ED11 A0 08 02005 LDY #8 ; CHECK 8 ROWS ED13 AD 82 A4 02006 LDA DRB2 ; ANY KEY ? ED16 0D 2A A4 02007 ORA KMASK ; DISABLE ROW 1 IF CRTL OR SHIFT ED19 8D 7F A4 02008 STA ROLLFL ; SAVE WHICH KEY IT WAS ED1C 0A 02009 ONEK3 ASL A ED1D 90 0A 02010 BCC ONEK4 ; JUMP IF KEY (ZERO) ED1F 88 02011 DEY ED20 D0 FA 02012 BNE ONEK3 ED22 AD 2B A4 02013 LDA STBKEY ED25 C9 FF 02014 CMP #$FF ; LAST CLMN ? ED27 D0 E0 02015 BNE ONEK1 ; NO ,DO NEXT CLMN ED29 60 02016 ONEK4 RTS 02017 ED2A A2 00 02018 DEBKEY LDX #0 ; CLEAR CNTRL OR SHIFT ED2C A9 00 02019 DEBK1 LDA #0 ; CLR KMASK ED2E 8D 2A A4 02020 STA KMASK ED31 A9 88 02021 LDA #DEBTIM ED38 4C 18 EC 02024 JMP DE1 ; WAIT FRO 5 MSEC 02025 02026 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 02027 ; GET A CHAR FROM TAPE SUBROUTINE 02028 ; A BUFFER IS USED TO GET BLOCKS OF DATA 02029 ; FROM TAPE ,EXCEPT WHEN FORMAT EQUAL TO 02030 ; KIM-1 (THE WHOLE FILE IS LOADED AT ONE TIME) ED3B 20 9E EB 02031 TIBYTE JSR PHXY ; PUSH X ED3E AE 36 A4 02032 LDX TAPTR ; POINTER FOR BUFFER ED41 E0 50 02033 CPX #80 ; IS BUFFER EMPTY ? ED43 D0 03 02034 BNE TIB1 ED45 20 53 ED 02035 JSR TIBY1 ; LOAD ANOTHER BLOCK ED48 BD 16 01 02036 TIB1 LDA TABUFF,X ED4B E8 02037 INX ED4C 8E 36 A4 02038 STX TAPTR ED4F 20 AC EB 02039 JSR PLXY ; PULL X ED52 60 02040 RTS 02041 ; LOAD A BLOCK FROM TAPE INTO BUFFER ED53 20 EA ED 02042 TIBY1 JSR TAISET ; SET TAPE FOR INPUT ED56 20 29 EE 02043 TIBY3 JSR GETTAP ; GET A CHAR FROM TAPE ED59 C9 23 02044 CMP #'#' ; CHECK FIRST CHAR FOR ED5B F0 06 02045 BEQ TIBY4 ; START OF BLOCK ED5D C9 16 02046 CMP #$16 ; IF NOT # SHOULD BE SYN ED5F D0 F2 02047 BNE TIBY1 ED61 F0 F3 02048 BEQ TIBY3 ED63 A2 00 02049 TIBY4 LDX #0 ED65 20 29 EE 02050 TIBY5 JSR GETTAP ; NOW LOAD INTO BUFFER ED68 9D 16 01 02051 STA TABUFF,X ED6B E8 02052 INX ED6C E0 52 02053 CPX #82 ED6E D0 F5 02054 BNE TIBY5 ED70 AD 00 A8 02055 LDA DRB ED73 29 CF 02056 AND #$CF ED75 8D 00 A8 02057 STA DRB ; TURN OFF TAPES ED78 58 02058 CLI ; ENABL INTERR ED79 20 BD ED 02059 JSR ADDBK1 ; DISPLAY BLK COUNT ED7C A2 00 02060 LDX #0 ; TO CLEAR PTR IN TIBYTE ED7E AD 15 01 02061 LDA BLK ; CHECK THE BLOCK COUNT ED81 F0 05 02062 BEQ TIBY5A ; IF FIRST BLOCK ,DO NOT CMP ED83 DD 16 01 02063 CMP TABUFF,X ED86 D0 28 02064 BNE TIBY7 ; BRANCH IF WE MISSED ONE BLOCK ED88 E8 02065 TIBY5A INX ED89 8E 36 A4 02066 STX TAPTR ED8C EE 15 01 02067 INC BLK ; INCR BLK CONT ED8F AD 67 01 02068 LDA TABUFF+81 ; STORE THIS BLK CKSUM ED92 48 02069 PHA ED93 AD 66 01 02070 LDA TABUFF+80 ED96 48 02071 PHA ED97 CE 12 A4 02072 DEC INFLG ; SET INFLG DIFF FROM OUTFLG ED9A 20 E7 F1 02073 JSR BKCKSM ; COMPUT BLK CKSUM FOR THIS BLK ED9D 68 02074 PLA ED9E CD 66 01 02075 CMP TABUFF+80 ; DO THEY AGREE ? EDA1 D0 0C 02076 BNE TIBY6 EDA3 68 02077 PLA EDA4 CD 67 01 02078 CMP TABUFF+81 EDA7 D0 07 02079 BNE TIBY7 EDA9 EE 12 A4 02080 INC INFLG ; RESTORE INPUT DEVICE EDAC A2 01 02081 LDX #1 ; TO GET FIRST CHR IN TIBYTE EDAE 60 02082 RTS EDAF 68 02083 TIBY6 PLA ; RESTORE STACK PTR EDB0 68 02084 TIBY7 PLA EDB1 68 02085 PLA EDB2 68 02086 PLA EDB3 68 02087 PLA EDB4 20 8E E3 02088 JSR CKERO EDB7 4C A1 E1 02089 JMP COMIN 02090 02091 ; ADD 1 TO BLK COUNT AND OUTPUT IT EDBA EE 15 01 02092 ADDBLK INC BLK ; INCR BLK CNT EDBD EE 11 A4 02093 ADDBK1 INC PRIFLG ; SO DONT OUTPUT TO PRINTR EDC0 A9 12 02094 LDA #18 ; ONLY OUTPUT IN THIS POSITION EDC2 8D 15 A4 02095 STA CURPO2 EDC5 AD 4A A4 02096 LDA DIBUFF+18 ; SAVE DISBUFF (FOR EDIT) EDC8 48 02097 PHA EDC9 AD 4B A4 02098 LDA DIBUFF+19 EDCC 48 02099 PHA EDCD AE 13 A4 02100 LDX OUTFLG ; SAVE OUTFLG EDD0 A9 0D 02101 LDA #CR EDD2 8D 13 A4 02102 STA OUTFLG ; TO OUTPUT TO TERMINAL EDD5 AD 16 01 02103 LDA BLK+1 ; BLK CNT COMING FROM TAPE EDD8 20 46 EA 02104 JSR NUMA ; OUTPUT IN ASCII EDDB 8E 13 A4 02105 STX OUTFLG ; RESTORE OUTFLG EDDE 68 02106 PLA EDDF 8D 4B A4 02107 STA DIBUFF+19 EDE2 68 02108 PLA EDE3 8D 4A A4 02109 STA DIBUFF+18 EDE6 CE 11 A4 02110 DEC PRIFLG ; RESTORE PRIFLG EDE9 60 02111 RTS 02112 02113 ; SET TAPE (1 OR 2) FRO INPUT EDEA A9 37 02114 TAISET LDA #$37 ; SET PB7 FRO INPUT EDEC 8D 02 A8 02115 STA DDRB EDEF AD 34 A4 02116 LDA TAPIN ; INPUT FLAG (TAP 1=0 OR TAP 2=1) EDF2 20 1C EE 02117 JSR TIOSET ; RESET PB4 OR PB5 EDF5 A9 EE 02118 LDA #MOFF+DATIN ; SET CA2=1 (DATA IN) EDF7 8D 0C A8 02119 STA PCR EDFA A9 FF 02120 LDA #$FF ; PREPARE T2 EDFC 8D 08 A8 02121 STA T2L ; LACTH 02122 ; CHCK BIT BY BIT UNTIL $16 EDFF 20 3B EE 02123 SYNC JSR RDBIT ; GET A BIT IN MSB EE02 4E 2A A4 02124 LSR CPIY ; MAKE ROOM FOR BIT EE05 0D 2A A4 02125 ORA CPIY ; PUT BIT IN MSB EE08 8D 2A A4 02126 STA CPIY EE0B C9 16 02127 CMP #$16 ; SYN CHAR ? EE0D D0 F0 02128 BNE SYNC EE0F A2 05 02129 LDX #$05 ; TEST FRO 5 SYN CHARS EE11 20 29 EE 02130 SYNC1 JSR GETTAP EE14 C9 16 02131 CMP #$16 EE16 D0 E7 02132 BNE SYNC ; IF NOT 2 CHAR RE-SYNC EE18 CA 02133 DEX EE19 D0 F6 02134 BNE SYNC1 EE1B 60 02135 RTS 02136 02137 ; SET PB4 OR PB5 OFF 02138 ; USED BY IN/OUT SET UPS EE1C D0 04 02139 TIOSET BNE TIOS1 ; BRCH IF TAP1 EE1E A9 14 02140 LDA #$14 ; SET TAPE 2 OFF (PB5=0) EE20 D0 02 02141 BNE TIOS2 EE22 A9 24 02142 TIOS1 LDA #$24 ; SET TAPE 1 OFF (PB4=0) EE24 8D 00 A8 02143 TIOS2 STA DRB EE27 78 02144 SEI ; DISABLE INTERR WHILE TAP EE28 60 02145 RTS 02146 02147 ; GET 1 CHAR FORM TAPE AND RETURN 02148 ; WITH CHR IN ACC, USE CPIY TO ASM CHR ,USES Y EE29 A0 08 02149 GETTAP LDY #$08 ; READ 8 BITS EE2B 20 3B EE 02150 GETA1 JSR RDBIT ; GET NEXT DATA BIT EE2E 4E 2A A4 02151 LSR CPIY ; MAKE ROOM FOR MSB EE31 0D 2A A4 02152 ORA CPIY ; OR IN SIGN BIT EE34 8D 2A A4 02153 STA CPIY ; REPLACE CHAR EE37 88 02154 DEY EE38 D0 F1 02155 BNE GETA1 EE3A 60 02156 RTS 02157 ; GET ONE BIT FROM TAPE AND 02158 ; RETURN IT IN SIGN OF A (MSB) EE3B AD 08 A4 02159 RDBIT LDA TSPEED ; ARE WE IN C7 OR 5B,5A FREQUENCY EE3E 30 27 02160 BMI RDBIT4 ; JUMP TO C7 FREQ FROMAT EE40 20 75 EE 02161 JSR CKFREQ ; START BIT IN HIGH FREC EE43 20 75 EE 02162 RDBIT1 JSR CKFREQ ; HIGH TO LOW FREQ TRANS EE46 B0 FB 02163 BCS RDBIT1 EE48 AD 96 A4 02164 LDA DIV64 ; GET HIGH FREQ TIMING EE4B 48 02165 PHA EE4C A9 FF 02166 LDA #$FF ; SET UP TIMER EE4E 8D 96 A4 02167 STA DIV64 EE51 20 75 EE 02168 RDBIT2 JSR CKFREQ ; LOW TO HIGH FREQ TRANS EE54 90 FB 02169 BCC RDBIT2 ; WAIT TILL FREQ IS HIGH EE56 68 02170 PLA EE57 38 02171 SEC EE58 ED 96 A4 02172 SBC DIV64 ; (256-T1) - (256-T2) =T2-T1 EE5B 48 02173 PHA ; LOW FREQ TIME-HIGHT FREQ TIME EE5C A9 FF 02174 LDA #$FF EE5E 8D 96 A4 02175 STA DIV64 ; SET UP TIMER EE61 68 02176 PLA EE62 49 FF 02177 EOR #$FF EE64 29 80 02178 AND #$80 EE66 60 02179 RTS 02180 ; EACH BIT STARTS WITH HALF PULSE OF 2400 & THEN 02181 ; 3 HALF PULSES OF 1200 HZ FRO 0 ,3 PLUSES OF 2400 FOR 1 02182 ; THE READING IS MADE ONTHE FOURTH 1/2 PULSE ,WHERE 02183 ; THE SIGNAL HAS STABILIZED EE67 20 75 EE 02184 RDBIT4 JSR CKFREQ ; SEE WHICH FREQ EE6A 90 FB 02185 BCC RDBIT4 EE6C 20 75 EE 02186 JSR CKFREQ EE6F 20 75 EE 02187 JSR CKFREQ EE72 4C B5 FF 02188 JMP PATC24 ; NOW READ THE BIT 02189 EE75 2C 00 A8 02190 CKFREQ BIT DRB ; ARE WE HIGH OR LOW ? EE78 30 27 02191 BMI CKF4 EE7A 2C 00 A8 02192 CKF1 BIT DRB ; WAIT TILL HIH EE7D 10 FB 02193 BPL CKF1 EE7F 65 00 02194 ADC $00 ; EQUALIZER EE81 AD 09 A8 02195 CKF2 LDA T2H ; SAVE CNTR EE84 48 02196 PHA EE85 AD 08 A8 02197 LDA T2L EE88 48 02198 PHA EE89 A9 FF 02199 LDA #$FF EE8B 8D 09 A8 02200 STA T2H ; START CNTR EE8E AD 08 A4 02201 LDA TSPEED EE91 30 06 02202 BMI CKF3 ; SUPER SPEED ? EE93 68 02203 PLA EE94 CD 08 A4 02204 CMP TSPEED ; HIGH OR LOW FREC EE97 68 02205 PLA ; C=1 IF HIGH ,C=0 IF LOW EE98 60 02206 RTS EE99 68 02207 CKF3 PLA EE9A CD 08 A4 02208 CMP TSPEED ; CENTER FREQ EE9D 68 02209 CKF3A PLA EE9E E9 FE 02210 SBC #$FE EEA0 60 02211 RTS EEA1 2C 00 A8 02212 CKF4 BIT DRB ; WAIT TILL LOW EEA4 30 FB 02213 BMI CKF4 EEA6 10 D9 02214 BPL CKF2 ; GO GET TIMING 02215 02216 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 02217 ; OUTPUT ACC TO TTY SUBROUTINE 02218 ; X,Y ARE PRESERVED EEA8 48 02219 OUTTTY PHA ; SAVE A EEA9 20 9E EB 02220 JSR PHXY ; PUSH X EEAC 8D 27 A4 02221 STA STIY ; PUT CHAR HERE EEAF 20 0F EC 02222 JSR DELAY ; STOP BIT FROM LAST CHAR EEB2 AD 00 A8 02223 LDA DRB EEB5 29 FB 02224 AND #$FB ; START BIT PB2=0 EEB7 8D 00 A8 02225 STA DRB ; TTO=PB2 EEBA 8D 28 A4 02226 STA STIY+1 ; SAVE THIS PATTERN EEBD 20 0F EC 02227 JSR DELAY EEC0 A2 08 02228 LDX #$08 ; 8 BITS EEC2 2E 27 A4 02229 ROL STIY ; GET FIRST LSB INTO BIT 2 EEC5 2E 27 A4 02230 ROL STIY EEC8 2E 27 A4 02231 ROL STIY EECB 6E 27 A4 02232 OUTT1 ROR STIY EECE AD 27 A4 02233 LDA STIY EED1 29 04 02234 AND #$04 ; GET ONLY BIT 2 FOR PB2 EED3 0D 28 A4 02235 ORA STIY+1 ; PUT BIT INTO PATTERN EED6 8D 00 A8 02236 STA DRB ; NOW TO TTY EED9 08 02237 PHP ; PRESERVE CARRY FOR ROTATE EEDA 20 0F EC 02238 JSR DELAY EEDD 28 02239 PLP EEDE CA 02240 DEX EEDF D0 EA 02241 BNE OUTT1 EEE1 A9 04 02242 LDA #$04 ; STOP BIT EEE3 0D 28 A4 02243 ORA STIY+1 EEE6 8D 00 A8 02244 STA DRB EEE9 20 0F EC 02245 JSR DELAY ; STOP BIT EEEC 20 AC EB 02246 JSR PLXY ; PULL X EEEF 68 02247 PLA EEF0 C9 0A 02248 CMP #LF EEF2 F0 07 02249 BEQ OUTT2 EEF4 C9 FF 02250 CMP #NULLC EEF6 F0 03 02251 BEQ OUTT2 EEF8 4C 05 EF 02252 JMP OUTDIS ; USE THAT BUFF EEFB 60 02253 OUTT2 RTS 02254 02255 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 02256 ; OUTPUT A CHR TO D/P SUBR (SINGLE ENTRY FOR BOTH SUBR) 02257 ; IF CHAR= CLEAR DISPLAY & PRINTER EEFC 20 00 F0 02258 OUTDP JSR OUTPRI ; FIRST TO PRI THEN TO DISP EEFF EA 02259 NOP EF00 EA 02260 NOP EF01 EA 02261 NOP EF02 6C 06 A4 02262 OUTDP1 JMP [DILINK] ; HERE HE COULD ECHO SOMEWHERE ELSE 02263 02264 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 02265 ; OUTPUT ACC TO DISPLAY SUBROUTINE 02266 ; IF SIGN BIT (MSB)=1 DISPL DO NOT CLR TO THE RIGHT EF05 48 02267 OUTDIS PHA ; SAVE A EF06 20 9E EB 02268 JSR PHXY ; PUSH X EF09 C9 0D 02269 CMP #CR ; ? EF0B D0 07 02270 BNE OUTD1 EF0D A2 00 02271 LDX #0 ; YES EF0F 8E 15 A4 02272 STX CURPO2 ; CLEAR DISP POINTER EF12 F0 42 02273 BEQ OUTD5 ; GO CLEAR DISP EF14 4C 9C FE 02274 OUTD1 JMP PATCH4 EF17 E0 3C 02275 OUTD1A CPX #60 ; LAST CHAR FOR DISP? EF19 90 05 02276 BCC OUTD2 EF1B 20 AC EB 02277 JSR PLXY ; GO BACK EF1E 68 02278 PLA ; DO NOT STORE EF1F 60 02279 RTS EF20 9D 38 A4 02280 OUTD2 STA DIBUFF,X ; PUT CHAR IN BUFF EF23 EE 15 A4 02281 INC CURPO2 ; INC POINTER EF26 E0 14 02282 CPX #20 ; DISPLAY FULL? EF28 90 1E 02283 BCC OUTD4 EF2A 20 2F EF 02284 JSR OUTD2A ; THIS WAY SCROLL IS A SUBR EF2D 30 47 02285 BMI OUTD7 ; EXIT DISP 02286 ; YES, SCROLL CHARS TO THE LEFT EF2F 8A 02287 OUTD2A TXA ; X---> Y EF30 A8 02288 TAY EF31 A2 13 02289 LDX #19 ; ADDR FOR DISP DO NOT EF33 8E 27 A4 02290 OUTD3 STX STIY ; DECREM IN BINARY EF36 B9 38 A4 02291 LDA DIBUFF,Y ; FROM BUFFER TO DISP EF39 09 80 02292 ORA #$80 ; NO CURSOR EF3B 20 7B EF 02293 JSR OUTDD1 ; CONVERT X TO REAL ADDR EF3E 88 02294 DEY EF3F CE 27 A4 02295 DEC STIY EF42 AE 27 A4 02296 LDX STIY EF45 10 EC 02297 BPL OUTD3 ; AGAIN UNTIL WHOLE DISP EF47 60 02298 RTS EF48 48 02299 OUTD4 PHA EF49 09 80 02300 ORA #$80 ; NO CURSOR EF4B 20 7B EF 02301 JSR OUTDD1 ; X=<$19 ,CONVRT TO REAL ADDR EF4E 68 02302 PLA EF4F 29 80 02303 AND #$80 ; IF MSB=0 CLEAR REST OF DISPLAY EF51 D0 23 02304 BNE OUTD7 EF53 AE 15 A4 02305 LDX CURPO2 02306 ; CLEAR DISP TO THE RIGHT EF56 E0 14 02307 OUTD5 CPX #20 EF58 B0 1C 02308 BCS OUTD7 EF5A 8E 27 A4 02309 STX STIY EF5D A9 A0 02310 LDA #$A0 ; EF5F 20 7B EF 02311 JSR OUTDD1 ; CONVRT TO REAL ADDR EF62 EE 27 A4 02312 INC STIY EF65 AE 27 A4 02313 LDX STIY EF68 D0 EC 02314 BNE OUTD5 ; GO NEXT EF6A 4C 76 EF 02315 JMP OUTD7 EF6D EA 02316 NOP EF6E EA 02317 NOP EF6F EA 02318 NOP EF70 EA 02319 NOP EF71 EA 02320 NOP EF72 EA 02321 NOP EF73 EA 02322 NOP EF74 EA 02323 NOP EF75 EA 02324 NOP EF76 20 AC EB 02325 OUTD7 JSR PLXY ; REST ,SO PRINTR INDEPEN EF79 68 02326 PLA EF7A 60 02327 RTS 02328 02329 ; CONVERT X INTO REAL ADDR FOR DISPLAY 02330 ; AND OUTPUT IT PB=DATA ; PA=W,CE ,A0 A1 (6520) EF7B 48 02331 OUTDD1 PHA ; SAVE DATA EF7C 8A 02332 TXA EF7D 48 02333 PHA ; SAVE X EF7E 4A 02334 LSR A ; DIVIDE X BY 4 EF7F 4A 02335 LSR A ; TO GET CHIP SELECT EF80 AA 02336 TAX ; BACK TO X EF81 A9 04 02337 LDA #4 ; FIRST CHIP SELECT EF83 E0 00 02338 CPX #0 ; FIRST CHIP ? EF85 F0 04 02339 BEQ OUTDD3 EF87 0A 02340 OUTDD2 ASL A EF88 CA 02341 DEX EF89 D0 FC 02342 BNE OUTDD2 ; BACK TILL RIGH CS EF8B 8D 28 A4 02343 OUTDD3 STA STIY+1 ; SAVE CS TEMPORARILY EF8E 68 02344 PLA ; GET X AGAIN FOR CHAR EF8F 29 03 02345 AND #03 ; IN THAT CHIP EF91 0D 28 A4 02346 ORA STIY+1 ; OR IN CS AND CHAR 02347 ; STORE ADDR AND DATA INTO DISPL EF94 49 FF 02348 EOR #$FF ; W=1 , CE=0 & A1,A0 EF96 8D 00 AC 02349 STA RA EF99 AA 02350 TAX ; SAVE A IN X EF9A 68 02351 PLA ; GET DATA EF9B 48 02352 PHA EF9C 8D 02 AC 02353 STA RB EF9F 8A 02354 TXA EFA0 49 80 02355 EOR #$80 ; SET W=0 EFA2 8D 00 AC 02356 STA RA EFA5 EA 02357 NOP EFA6 09 7C 02358 ORA #$7C ; SET CE=1 EFA8 8D 00 AC 02359 STA RA EFAB A9 FF 02360 LDA #$FF ; SET W=1 EFAD 8D 00 AC 02361 STA RA EFB0 68 02362 PLA ; RETURN DATA EFB1 60 02363 RTS 02364 02365 .org $EFF9 EFF9 EA 02366 .byte $EA 02367 .org $F000 02368 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 02369 ; OUTPUT ACC TO PRINTER SUBROUTINE 02370 ; PRINTS ON 21RST CHAR OR WHEN (CR) 02371 ; IT WILL PUT IT ON BUFFER BUT WONT PRINT IF 02372 ; PRIFLG=0 F000 48 02373 OUTPRI PHA ; SAVE CHR TO BE OUTPUT F001 20 9E EB 02374 JSR PHXY ; SAVE X F004 C9 0D 02375 CMP #$0D ; SEE IF CR F006 F0 07 02376 BEQ OUTO1 ; YES SO PRINT THE BUFF F008 AE 16 A4 02377 LDX CURPOS ; PTR TO NEXT PSO IN BUFF F00B E0 14 02378 CPX #20 ; SEE IF BUFF FULL F00D D0 16 02379 BNE OUT04 ; NOT FULL SO RETURN 02380 ; (CR) SO FILL REST OF BUFFER WITH BLANKS F00F 48 02381 OUTO1 PHA F010 A9 00 02382 LDA #0 ; CURPOS = 0 F012 AE 16 A4 02383 LDX CURPOS ; SEE IF ANYTHING IN BUFFER F015 8D 16 A4 02384 STA CURPOS F018 20 38 F0 02385 JSR OUTPR ; CLEAR PRIBUFF TO RIGHT 02386 ; BUFFER FILLED SO PRINT IT F01B 20 45 F0 02387 JSR IPST ; START THE PRINT F01E A2 00 02388 LDX #0 ; STORE CHR IN BUFF (FIRST LOC) F020 68 02389 PLA ; GET IT F021 C9 0D 02390 CMP #CR ; DONT STORE IF (CR) F023 F0 0E 02391 BEQ OUT05 F025 9D 60 A4 02392 OUT04 STA IBUFM,X ; STORE CHR IN BUFF F028 EE 16 A4 02393 INC CURPOS ; INCR BUFF PNTR F02B E8 02394 INX F02C 29 80 02395 AND #$80 F02E D0 03 02396 BNE OUT05 ; DONT CLR IS MSB=1 F030 20 38 F0 02397 JSR OUTPR ; CLEAR PRIBUFF TO THE RIGHT F033 20 AC EB 02398 OUT05 JSR PLXY ; RESTORE REGS F036 68 02399 PLA F037 60 02400 RTS F038 A9 20 02401 OUTPR LDA #$20 ; FILL REST OF BUFF WIT BLANKS F03A E0 14 02402 OUTPR1 CPX #20 ; SEE IF END OF BUFF F03C F0 06 02403 BEQ OUTPR2 F03E 9D 60 A4 02404 STA IBUFM,X ; NO SO STORE BLANK F041 E8 02405 INX ; INCR BUFF PNTR F042 10 F6 02406 BPL OUTPR1 F044 60 02407 OUTPR2 RTS 02408 02409 ; SUB TO OUTPUT BUFFER, 70 DOTS (10 DOTS AT 02410 ; A TIME BY 7 ROWS) FOR EACH LINE OF PRINTING F045 2C 11 A4 02411 IPST BIT PRIFLG ; PRINT FLG ON ? F048 10 2E 02412 BPL IPO4 F04A 20 CB F0 02413 IPSO JSR PINT ; INITIALIZE VALUES F04D 20 E3 F0 02414 JSR IPSU ; SET UP FIRS OUTPUT PATTERN F050 A9 C1 02415 IPO0 LDA #PRST+SP12+MON ; TURN MOTOR ON F052 8D 0C A8 02416 STA PCR F055 20 A0 FF 02417 JSR PAT23 ; TIME OUT? F058 D0 0C 02418 BNE IPO2 ; NO, START SIGNAL RECEIVED F05A 20 A0 FF 02419 JSR PAT23 ; YES, TRY AGAIN F05D D0 07 02420 BNE IPO2 F05F 4C 79 F0 02421 JMP PRIERR ; TWO TIMEOUT - ERROR F062 EA 02422 NOP F063 EA 02423 NOP F064 EA 02424 NOP F065 EA 02425 NOP F066 20 87 F0 02426 IPO2 JSR PRNDOT ; STRB P1=1 PRINT DOTS (1.7MSEC) F069 20 87 F0 02427 JSR PRNDOT ; STRB P2=1 PRINT DOTS (1.7MSEC) 02428 ; CHECK FOR 90, WHEN 70 PRNDOT WILL OUTPUT ZEROS F06C AD 77 A4 02429 LDA IDOT F06F C9 5A 02430 CMP #90 F071 90 F3 02431 BCC IPO2 ; L.T. 90 THEN GOTO STROB P1 F073 A9 E1 02432 IPO3 LDA #PRST+SP12+MOFF ; TIRN MOTOR OFF F075 8D 0C A8 02433 STA PCR F078 60 02434 IPO4 RTS 02435 F079 20 44 EB 02436 PRIERR JSR CLR ; CLEAR PRI PNTR F07C 20 B1 FE 02437 JSR PATCH5 ; PURN PRI OFF F07F A0 3B 02438 LDY #M12-M1 F081 20 AF E7 02439 JSR KEP F084 4C A1 E1 02440 JMP COMIN ; BACK WHERE SUBR WAS CALLED 02441 02442 ; SUBR TO INCR DOT COUNTER,WHEN 02443 ; NEG TRANS OUTPUT CHR FOR 1.7 MSEC 02444 ; CLEAR & SET UP NEXT PATTERN F087 A9 00 02445 PRNDOT LDA #0 ; CLR INTERRUPTS F089 8D 01 A8 02446 STA DRAH F08C AD 0D A8 02447 PRDOT0 LDA IFR F08F 29 02 02448 AND #MSP12 ; ANY STROBES F091 F0 F9 02449 BEQ PRDOT0 F093 AD 0C A8 02450 LDA PCR F096 49 01 02451 EOR #$01 F098 8D 0C A8 02452 STA PCR F09B EE 77 A4 02453 INC IDOT F09E AD 79 A4 02454 LDA IOUTU ; 2 LEFT ELEM F0A1 0D 00 A8 02455 ORA DRB ; DO NOT TURN TTY OUTPUT OFF F0A4 8D 00 A8 02456 STA DRB F0A7 AD 78 A4 02457 LDA IOUTL ; T RIGTH ELEM, CLR CA1 INTER FLG F0AA 8D 01 A8 02458 STA DRAH F0AD A9 A4 02459 LDA #PRTIME ; START T2 FOR 1.7 MSEC F0B4 8D 09 A8 02462 STA T2H F0B7 20 E3 F0 02463 JSR IPSU ; SET NEXT PATTER WHILE WAITING F0BA 20 1B EC 02464 JSR DE2 ; WAIT TILL TIME OUT F0BD A9 00 02465 LDA #0 ; THERNAL ELEM OFF F0BF 8D 01 A8 02466 STA DRAH F0C2 AD 00 A8 02467 LDA DRB ; BUT DONT CHANGE TAPE CONTROLS F0C5 29 FC 02468 AND #$FC F0C7 8D 00 A8 02469 STA DRB F0CA 60 02470 RTS 02471 02472 ; SUBROUTINE PINT -- INIT VARS FOR PRINTER F0CB A9 FF 02473 PINT LDA #$FF F0CD 8D 74 A4 02474 STA IDIR ; DIRECTION <= - F0D0 A9 05 02475 LDA #5 F0D2 8D 75 A4 02476 STA ICOL ; COLUMN <= LEFTMOST +1 F0D5 A9 01 02477 LDA #1 F0D7 8D 76 A4 02478 STA IOFFST ; OFFSET <= LEFT CHARACTER F0DA 8D 7C A4 02479 STA IMASK F0DD A9 00 02480 LDA #0 F0DF 8D 77 A4 02481 STA IDOT ; DOC COUNTER <= 0 F0E2 60 02482 RTS 02483 02484 ; THE VARIABLES FOR THE PRINTER ARE AS FOLLOWS 02485 ; 02486 ; IDIR DIRECT HEAD IS CURRENTLY MOVING (0=+, $FF=-) 02487 ; ICOL CLMN TO BE PRINTED NEXT (LEFTMOST=0,RIGHTMOST=4 02488 ; IOFFST OFFSET N PRINT BUFF (0=LEFT CHR, 1=RIGHT CHR) 02489 ; IDOT COUNT OF NUMBER OF DOTS PRINTED THUS FAR 02490 ; IOUTL SOLENOID PATTERN (8 CHRS ON RIGHT) 02491 ; IOUTU SOLENOID PATTERN (2 CHRS ON LEFT) 02492 ; IBITL 1 BIT MSK USED IN SETTING NEXT SOLENOID VALUE 02493 ; IBITU UPPER PART OF MASK 02494 ; IBUFM START OF PRINT BUFFER (LEFTMOST CHR FIRST) 02495 ; IMASK MASK FOR CURRENT ROW BEING PRINTED 02496 ; JUMP ADDRESS OF TABLE FOR CURRENT COLUMN 02497 ; 02498 ; THE DOT PATTERNS FOR THE CHRS ARE STORED SO THAT... 02499 ; EACH BYTE CONTAINS THE DOTS FOR ONE COLUMN OF ONE... 02500 ; CHR. SINCE EACH COLUMN CONTAINS SEVEN DOTS , 02501 ; THIS MEANS THAT ONE BIT PER BYTE IS UNUSED. 02502 ; THE PATTERNS ARE ORGANIZED INTO 5 TABLES OF 64... 02503 ; BYTES WHERE EACH TABLE CONTAINS ALL THE DOT... 02504 ; PATTERNS FOR A PARTICULAR COLUMN. THE BYTES IN EACH... 02505 ; TABLE ARE ORDERED ACCORDING TO THE CHR CODE OF... 02506 ; THE CHR BEING REFERENCED. THE CHR CODE CAN... 02507 ; THUS BE USED TO DIRECTLY INDEX INTO THE TABLE. 02508 02509 ; SUBROUTINE IPSU -- SET UP OUTPUT PATTERN FOR PRINTER 02510 ; THIS ROUTINE IS CALLED IN ORDER TO 02511 ; SET UP THE NEXT GROUP OF SOLENOIDS TO 02512 ; BE OUTPUT TO THE PRINTER 02513 ; ON NETRY THE CONTENTS OF ALL RESGISTERS 02514 ; ARE ARIBTRARY 02515 ; ON EXIT THE CONTENTS OF A,X,Y ARE UNDEFINED F0E3 A2 00 02516 IPSU LDX #0 ; X POINTS TO VAR BLOCK FOR PRNTR F0E5 20 21 F1 02517 JSR INCP ; ADVANCE PTRS TO NEXT DOT POSITION 02518 ; X NOW CONTAINS INDEX INTO PRINT BUFFER F0E8 BD 60 A4 02519 IPS1 LDA IBUFM,X ; LOAD NEXT CHAR FROM BUFFER F0EB 29 3F 02520 AND #$3F F0ED A8 02521 TAY F0EE A9 7D 02522 LDA # 60 CHR F799 A0 3C 03206 INO3B LDY #60 ; SET Y TO MAX OF 60 F79B A9 01 03207 LDA #$01 F79D 0D 11 A4 03208 ORA PRIFLG ; DO NOT OUTPUT TO PRI ANY MORE F7A0 8D 11 A4 03209 STA PRIFLG ; OTHERWISE CLOBBERS BUFFER F7A3 8C 15 A4 03210 STY CURPO2 F7A6 D0 D2 03211 BNE INO2 ; GO BACK F7A8 84 EA 03212 INO3 STY LENGTH F7AA C0 00 03213 CPY #0 ; FIRST CHAR? F7AC D0 17 03214 BNE INO5 F7AE AD 19 A4 03215 LDA COUNT ; K OR I COMM FLG ? F7B1 D0 12 03216 BNE INO5 ; BRANCH IF C COMMAND F7B3 20 24 EA 03217 JSR CRCK ; (CR) IF PRI PNTR DIFF FROM 0 F7B6 20 03 FF 03218 JSR PATC13 ; TURN ON TAPES & SET DEFAULT DEV F7B9 20 27 F7 03219 INO3A JSR PLNE ; DISPLAY NEXT LINE DOWN F7BC 20 09 F7 03220 JSR UPNO ; PRINT 'END' IF BOTTOM F7BF 20 D8 F6 03221 JSR DNNO F7C2 4C 78 FA 03222 JMP ERRO F7C5 20 3F F9 03223 INO5 JSR REPLAC ; INSERT HE LINE F7C8 4C 24 EA 03224 JMP CRCK ; (CR) IF PRI PTR NOT 0 03225 03226 ; ***** R COMMAND-READ LINE ***** 03227 ; READ TEXT FROM ANY INPUT DEVICE UNTIL 03228 ; TWO CONSECUTIVE (CR) ARE ENCOUNTERED F7CB 20 48 E8 03229 INPU JSR WHEREI F7CE AC 12 A4 03230 LDY INFLG ; IF TAPE DO NOT ERRASE BUFFER F7D1 C0 54 03231 CPY #'T' F7D3 F0 03 03232 BEQ INPU1 F7D5 20 13 EA 03233 JSR CRLOW F7D8 20 6D F7 03234 INPU1 JSR INL F7DB 20 09 F7 03235 JSR UPNO ; NEXT LINE F7DE 4C D8 F7 03236 JMP INPU1 03237 03238 ; ***** L COMMAND-LIST LINES ***** 03239 ; PRINT FROM HERE N LINES TO ACTIVE OUTPUT DEV F7E1 20 37 E8 03240 LST JSR PSL1 ; PRINT '/' F7E4 20 85 E7 03241 JSR GCNT ; GET LINES COUNT F7E7 20 13 EA 03242 JSR CRLOW F7EA 20 71 E8 03243 JSR WHEREO ; WHERE TO F7ED 4C F8 F7 03244 JMP LSTO2 ; ONE MORE LINE F7F0 20 07 E9 03245 LSTO1 JSR RCHEK F7F3 20 90 E7 03246 JSR DONE F7F6 F0 0B 03247 BEQ LST3 F7F8 20 27 F7 03248 LSTO2 JSR PLNE F7FB 20 09 F7 03249 JSR UPNO ; NEXT LINE F7FE 20 E9 F8 03250 JSR ATBOT F801 90 ED 03251 BCC LSTO1 ; NO F803 20 3F F7 03252 LST3 JSR PO3 ; ONE MORE CRLF FOR TAPE F806 20 0D FF 03253 JSR PATC14 ; CLOSE TAPE IF NEEDED F809 4C 5C FA 03254 JMP ENDERR 03255 03256 ; ***** F COMMAN-FIND STRING ***** 03257 ; FIND STRING AND PRINT LINE TO TERMINAL F80C 20 1E F8 03258 FCHAR JSR FCH F80F AD 15 A4 03259 FCHA1 LDA CURPO2 ; SAVE BUFFER PNTR F812 48 03260 PHA F813 20 44 EB 03261 JSR CLR ; CLEAR DISP PNTR F816 20 27 F7 03262 JSR PLNE F819 68 03263 PLA F81A 8D 15 A4 03264 STA CURPO2 F81D 60 03265 RTS 03266 ; FIND A CHARACTER STRING F81E A0 00 03267 FCH LDY #0 F820 20 BD E7 03268 JSR PROMPT F823 20 5F E9 03269 FC1 JSR RDRUB ; GET THE CHARACTER F826 C9 0D 03270 CMP #$D ; REUSE OLD ARGUMENT?? F828 D0 0A 03271 BNE FC3 F82A C0 00 03272 CPY #0 ; FIRST CHAR? F82C D0 06 03273 BNE FC3 F82E 20 09 F7 03274 FC2 JSR UPNO ; NEXT LINE DOWN F831 4C 49 F8 03275 JMP FC5 F834 C9 0D 03276 FC3 CMP #CR ; DONE F836 F0 0B 03277 BEQ FC4 F838 99 EB 00 03278 STA STRING,Y F83B C8 03279 INY F83C C0 14 03280 CPY #20 ; MAX LENGTH F83E D0 E3 03281 BNE FC1 F840 4C 72 FA 03282 JMP ERROR F843 20 24 EA 03283 FC4 JSR CRCK ; CLEAR DISPLAY F846 8C 29 A4 03284 STY STIY+2 ; COUNT OF CHRACTERS F849 A0 00 03285 FC5 LDY #0 F84B 8C 15 A4 03286 STY CURPO2 ; STRAT AT BEGINNING OF LINENTR IS F84E AC 15 A4 03287 FC6 LDY CURPO2 ; CLOBBER F851 A2 00 03288 LDX #0 F853 B1 DF 03289 FC7 LDA [NOWLN],Y ; GET THE CHARACTER F855 D0 03 03290 BNE FC8 ; NOT AT END F857 4C 5C FA 03291 JMP ENDERR F85A C9 0D 03292 FC8 CMP #CR ; END OF LINE F85C F0 D0 03293 BEQ FC2 F85E D5 EB 03294 CMP STRING,X F860 F0 06 03295 BEQ FC9 F862 EE 15 A4 03296 INC CURPO2 F865 4C 4E F8 03297 JMP FC6 F868 C8 03298 FC9 INY F869 E8 03299 INX F86A EC 29 A4 03300 CPX STIY+2 ; DONE? F86D D0 E4 03301 BNE FC7 F86F 60 03302 RTS 03303 03304 ; ***** Q COMMAND-EXIT EDITOR ***** 03305 ; EXIT THE TEXT EDITOR NEATLY F870 20 13 EA 03306 STOP JSR CRLOW F873 4C A1 E1 03307 JMP COMIN 03308 03309 ; ***** C COMMAND-CHANGE STRING ***** 03310 ; CHANGE STRING TO ANOTHER STRING IN A LINE F876 20 B2 F8 03311 CHNG JSR CFLG ; SET C COMMAND FLG F879 20 0C F8 03312 JSR FCHAR ; FIND CORRECT LINE F87C 20 3C E9 03313 CHN1 JSR READ ; IS (CR) IF OK F87F C9 0D 03314 CMP #CR F881 F0 09 03315 BEQ CHN2 F883 20 2E F8 03316 JSR FC2 ; TRY NEXT ONE F886 20 0F F8 03317 JSR FCHA1 ; SHOW LINE F889 4C 7C F8 03318 JMP CHN1 F88C AD 29 A4 03319 CHN2 LDA STIY+2 ; GET CHAR COUNT F88F 85 E9 03320 STA OLDLEN ; GET READY FRO REPLAC F891 AD 15 A4 03321 LDA CURPO2 ; PNTR TO BEGINNING OF STRING F894 48 03322 PHA ; SAVE IT F895 20 2A F9 03323 JSR ADDA ; ADD TO NOWLN (LINE PNTR) F898 20 44 EB 03324 JSR CLR ; CLEAR DISP F89B A0 05 03325 LDY #M3-M1 ; PRINT 'TO' F89D 20 AF E7 03326 JSR KEP F8A0 A0 00 03327 LDY #0 F8A2 20 7A F7 03328 JSR INO2 ; GET NEW STRING & REPLAC F8A5 68 03329 PLA F8A6 AA 03330 TAX F8A7 F0 06 03331 BEQ CHN4 F8A9 20 1D F9 03332 CHN3 JSR SUB ; RESTORE NOWLN WHERE IT WAS F8AC CA 03333 DEX F8AD D0 FA 03334 BNE CHN3 F8AF 4C 27 F7 03335 CHN4 JMP PLNE ; DISPLAY THE CHANGED LINE 03336 03337 ; THE FOLLOWING ARE SUBROUTINES USED BY COMMANDS F8B2 A9 01 03338 CFLG LDA #1 ; SET FLG FOR C COMMAND F8B4 D0 02 03339 BNE KI2 F8B6 A9 00 03340 KIFLG LDA #0 ; CLR K OR I COMMAND FLG F8B8 8D 19 A4 03341 KI2 STA COUNT F8BB 60 03342 RTS 03343 F8BC A5 E3 03344 TOPNO LDA TEXT ; SET CURRENT LINE TO TOP F8BE A6 E4 03345 LDX TEXT+1 F8C0 85 DF 03346 TPO1 STA NOWLN F8C2 86 E0 03347 STX NOWLN+1 F8C4 60 03348 RTS 03349 F8C5 A5 E1 03350 SETBOT LDA BOTLN ; SET CURRENT LINE TO BOTTOM F8C7 A6 E2 03351 LDX BOTLN+1 F8C9 85 E7 03352 STA SAVE F8CB 86 E8 03353 STX SAVE+1 F8CD 4C C0 F8 03354 JMP TPO1 03355 F8D0 AD 1C A4 03356 RESNOW LDA ADDR ; RESTORE CURRENT LINE ADDRESS F8D3 85 DF 03357 STA NOWLN F8D5 AD 1D A4 03358 LDA ADDR+1 F8D8 85 E0 03359 STA NOWLN+1 F8DA 60 03360 RTS 03361 03362 ; SEE CURRENT LINE AT TOP (C SET IF SO) F8DB A5 DF 03363 ATTOP LDA NOWLN F8DD C5 E3 03364 CMP TEXT F8DF D0 16 03365 BNE ATO1 F8E1 A5 E0 03366 LDA NOWLN+1 F8E3 C5 E4 03367 CMP TEXT+1 F8E5 D0 10 03368 BNE ATO1 F8E7 38 03369 SEC F8E8 60 03370 RTS 03371 03372 ; SEE IF CURRENT LINE AT BOTTOM (C SET IF SO) F8E9 A5 DF 03373 ATBOT LDA NOWLN F8EB A6 E0 03374 LDX NOWLN+1 F8ED C5 E1 03375 CMP BOTLN F8EF D0 06 03376 BNE ATO1 F8F1 E4 E2 03377 CPX BOTLN+1 F8F3 D0 02 03378 BNE ATO1 F8F5 38 03379 ATO2 SEC F8F6 60 03380 RTS F8F7 18 03381 ATO1 CLC F8F8 60 03382 RTS 03383 03384 ; SEE IF WE RAN PAST END OF BUFFER LIMIT F8F9 A5 E1 03385 ATEND LDA BOTLN F8FB A6 E2 03386 LDX BOTLN+1 F8FD E4 E6 03387 CPX END+1 ; HIGH BYTE > OR = ? F8FF 90 F6 03388 BCC ATO1 F901 D0 F2 03389 BNE ATO2 F903 C5 E5 03390 CMP END ; LOW BYTE > OR = ? F905 90 F0 03391 BCC ATO1 F907 B0 EC 03392 BCS ATO2 03393 03394 ; SAVE CURRENT LINE [NOWLN] IN S1 F909 A5 DF 03395 NOWS1 LDA NOWLN F90B A6 E0 03396 LDX NOWLN+1 F90D 4C 16 F9 03397 JMP ADDS1A 03398 03399 ; MOVE ADDR INTO S1 F910 AD 1C A4 03400 ADDRS1 LDA ADDR F913 AE 1D A4 03401 LDX ADDR+1 F916 8D 1A A4 03402 ADDS1A STA S1 F919 8E 1B A4 03403 STX S1+1 F91C 60 03404 RTS 03405 03406 ; SUBTRACT ONE FROM CURRENT LINE [NOWLN] F91D C6 DF 03407 SUB DEC NOWLN F91F A5 DF 03408 LDA NOWLN F921 C9 FF 03409 CMP #$FF F923 D0 02 03410 BNE SUB1 F925 C6 E0 03411 DEC NOWLN+1 F927 60 03412 SUB1 RTS 03413 03414 ; ADD ACC TO CURRENT LINE [NOWLN] F928 A9 01 03415 AD1 LDA #1 F92A 18 03416 ADDA CLC F92B 65 DF 03417 ADC NOWLN F92D 85 DF 03418 STA NOWLN F92F 90 02 03419 BCC ADDA1 F931 E6 E0 03420 INC NOWLN+1 F933 60 03421 ADDA1 RTS 03422 F934 A5 DF 03423 SAVNOW LDA NOWLN ; SAVE CURRENT LINE INTO ADDR F936 8D 1C A4 03424 STA ADDR F939 A5 E0 03425 LDA NOWLN+1 F93B 8D 1D A4 03426 STA ADDR+1 F93E 60 03427 REP2 RTS 03428 03429 ; MOVE CURRENT TEXT AROUND TO HAVE 03430 ; SPACE TO PUT IN THE NEW BUFFER F93F A4 EA 03431 REPLAC LDY LENGTH F941 C4 E9 03432 CPY OLDLEN ; COMPARE OLD AND NEW LENGTHS F943 D0 1A 03433 BNE R2W ; BRANCH IF DIFF F945 F0 07 03434 BEQ R87 ; LENGTHS ARE EQUAL. JUST REPLACE F947 A9 0D 03435 R8 LDA #CR F949 91 DF 03436 STA [NOWLN],Y F94B 20 4A FA 03437 JSR GOGO 03438 03439 ; LENGTH = OLDLEN F94E 88 03440 R87 DEY F94F C0 FF 03441 CPY #$FF F951 F0 EB 03442 BEQ REP2 F953 B9 38 A4 03443 R88 LDA DIBUFF,Y F956 91 DF 03444 STA [NOWLN],Y F958 20 4A FA 03445 JSR GOGO F95B 88 03446 DEY F95C 10 F5 03447 BPL R88 F95E 60 03448 RTS F95F B0 6E 03449 R2W BCS R100 ; LENGTH > OLDLEN 03450 03451 ; LENGTH < OLDLEN F961 20 34 F9 03452 JSR SAVNOW ; PUT NOWLN INTO ADDR F964 20 10 F9 03453 JSR ADDRS1 ; PUT IT IN S1 ALSO F967 A5 E9 03454 LDA OLDLEN F969 38 03455 SEC F96A E5 EA 03456 SBC LENGTH ; GET DIFFERENCE IN LENGTHS F96C A4 EA 03457 LDY LENGTH F96E D0 07 03458 BNE RQP F970 AE 19 A4 03459 LDX COUNT ; C-COMM ? F973 D0 02 03460 BNE RQP ; YES, JUMP F975 69 00 03461 ADC #0 ; INCLUDE (CR) F977 48 03462 RQP PHA F978 18 03463 CLC F979 6D 1A A4 03464 ADC S1 F97C 8D 1A A4 03465 STA S1 F97F 90 03 03466 BCC R6 F981 EE 1B A4 03467 INC S1+1 F984 A9 1A 03468 R6 LDA # OLDLEN F9CF A5 EA 03503 R100 LDA LENGTH ; NEW LINE IS LONGER F9D1 38 03504 SEC F9D2 E5 E9 03505 SBC OLDLEN F9D4 A4 E9 03506 LDY OLDLEN F9D6 D0 02 03507 BNE R101 ; ALREADY HAVE ROOM FOR CR F9D8 69 00 03508 ADC #0 ; ADD ONE TO DIFFERENCE F9DA 48 03509 R101 PHA F9DB 20 34 F9 03510 JSR SAVNOW ; NOWLN ITNO S1 F9DE 20 C5 F8 03511 JSR SETBOT F9E1 A0 00 03512 LDY #0 F9E3 B1 DF 03513 R102 LDA [NOWLN],Y F9E5 C9 00 03514 CMP #0 F9E7 F0 06 03515 BEQ R108 F9E9 20 28 F9 03516 JSR AD1 F9EC 4C E3 F9 03517 JMP R102 F9EF 68 03518 R108 PLA F9F0 48 03519 PHA F9F1 18 03520 CLC F9F2 65 E1 03521 ADC BOTLN ; ADD DIFFERENCE TO END F9F4 85 E1 03522 STA BOTLN ; STORE NEW END F9F6 90 02 03523 BCC R103 F9F8 E6 E2 03524 INC BOTLN+1 F9FA 20 F9 F8 03525 R103 JSR ATEND F9FD 90 0B 03526 BCC R107 F9FF A5 E7 03527 LDA SAVE ; RESTORE OLD BOTTOM FA01 85 E1 03528 STA BOTLN FA03 A5 E8 03529 LDA SAVE+1 FA05 85 E2 03530 STA BOTLN+1 FA07 4C 5C FA 03531 JMP ENDERR ; RAN PAST BUFFER END FA0A 20 09 F9 03532 R107 JSR NOWS1 ; SAVE CURRENT END FA0D 68 03533 PLA FA0E 18 03534 CLC FA0F 65 DF 03535 ADC NOWLN FA11 85 DF 03536 STA NOWLN FA13 90 02 03537 BCC R104 FA15 E6 E0 03538 INC NOWLN+1 FA17 A9 1A 03539 R104 LDA # IF PRI PTR DIFF FROM 0 FD5E AD 37 A4 03868 LDA CODFLG ; SEE IF HE WANTS CODE ALSO FD61 F0 1A 03869 BEQ FORM1 FD63 20 3E E8 03870 JSR BLANK FD66 20 3C F5 03871 JSR PRPC ; PROG CNTR 03872 ; OUTPUT OPCODE FD69 AE 2F A4 03873 FORMD2 LDX BYTESM FD6C A0 00 03874 LDY #00 FD6E A9 1C 03875 DISPLY LDA # X FE26 FE 30 01 03965 INC CH,X ; FORMAT TO MATCH DISASSEMBLER TBL FE29 C8 03966 INY FE2A C0 03 03967 CPY #03 ; REPEAT FOR EACH OF 3 CHARACTERS FE2C D0 E6 03968 BNE RDLUP 03969 03970 ; COMPRESS 3 FORMATTED CHARACTERS TO MOVAD & MOVAD+1 FE2E A0 03 03971 LDY #03 ; SET UP OUTER LOOP FE30 B9 2F 01 03972 OUTLUP LDA CH-1,Y ; COMPRESS 3 CHARACTERS FE33 A2 05 03973 LDX #05 ; SET UP INNER LOOP FE35 4A 03974 INLUP LSR A ; SHIFT 5 BITS ACCTO MOVAD,MOVAD+1 FE36 6E 26 01 03975 ROR MOVAD FE39 6E 27 01 03976 ROR MOVAD+1 FE3C CA 03977 DEX FE3D D0 F6 03978 BNE INLUP FE3F 88 03979 DEY FE40 D0 EE 03980 BNE OUTLUP 03981 03982 ; SEARCH FOR MATCHIN COMPRESSED CODE FE42 A2 40 03983 LDX #$40 FE44 AD 26 01 03984 SRCHLP LDA MOVAD FE47 DD B8 F5 03985 SRCHM CMP MNEML-1,X ; MATCH LEFT HALF FE4A F0 05 03986 BEQ MATCH FE4C CA 03987 DEX FE4D D0 F8 03988 BNE SRCHM FE4F F0 0B 03989 BEQ MATCH1 FE51 AD 27 01 03990 MATCH LDA MOVAD+1 FE54 DD F8 F5 03991 CMP MNEMR-1,X FE57 F0 06 03992 BEQ GOTIT FE59 CA 03993 DEX FE5A D0 E8 03994 BNE SRCHLP FE5C 4C C5 FC 03995 MATCH1 JMP ERRORM 03996 03997 ; GET INSTRUCTION TYPE FROM TYPE TABLE FE5F BD 5D FB 03998 GOTIT LDA TYPTB-1,X FE62 8D 2E 01 03999 STA TYPE 04000 04001 ; GET OPCODE FROM OP CODE UE FE65 BD 1D FB 04002 LDA STCODE-1,X FE68 8D 34 A4 04003 STA OPCODE FE6B 4C C1 FB 04004 JMP MODEM 04005 04006 ; THIS SECTION SETS THE CURRENT ADDRESS POINTER FE6E A9 2A 04007 STLO LDA #'*' FE70 20 7A E9 04008 JSR OUTPUT FE73 20 AE EA 04009 STLOAD JSR ADDIN ; GET ADDR FE76 B0 F6 04010 BCS STLO ; IN CASE OF ERROR FE78 4C 24 FF 04011 JMP PATC16 ; ADDR TO PC THEN TO STARTM 04012 04013 ; PATCHES TO CORRECT PROBLEMS WITHOUT 04014 ; CHANGING ENTRY POINTS TO THE ROUTINES FE7B 41 04015 .byte 'A' FE7C 38 04016 PATCH1 SEC ; ADJUST BAUD FE7D E9 2C 04017 SBC #44 FE7F 8D 18 A4 04018 STA CNTL30 FE82 60 04019 RTS 04020 FE83 8A 04021 CUREAD TXA ; SAVE X , OUTPUT CUR FE84 48 04022 PHA FE85 AE 15 A4 04023 LDX CURPO2 FE88 E0 14 04024 CPX #20 ; ONLY IF < 20 FE8A B0 05 04025 BCS PAT2A FE8C A9 DE 04026 LDA #$DE FE8E 20 7B EF 04027 JSR OUTDD1 FE91 68 04028 PAT2A PLA FE92 AA 04029 TAX FE93 4C 3C E9 04030 JMP READ ; CONTINUE 04031 FE96 20 3C E9 04032 RED1 JSR READ ; READ & ECHO WITHOUT CURSOR FE99 4C 76 E9 04033 JMP RED2 04034 FE9C AE 15 A4 04035 PATCH4 LDX CURPO2 ; DONT DO ANYTHING IF '8D' FE9F C9 8D 04036 CMP #$8D ; S0 FOR TV & NOT FOR DISP FEA1 D0 0B 04037 BNE PAT4A FEA3 A9 A0 04038 LDA #$A0 ; CLR CURSOR FEA5 20 7B EF 04039 JSR OUTDD1 FEA8 20 44 EB 04040 JSR CLR ; CLR PNTRS FEAB 4C 76 EF 04041 JMP OUTD7 ; EXIT FEAE 4C 17 EF 04042 PAT4A JMP OUTD1A ; CONTINUE 04043 FEB1 8D 11 A4 04044 PATCH5 STA PRIFLG ; TURN PRI OFF FEB4 4C 73 F0 04045 JMP IPO3 04046 FEB7 A9 1C 04047 PATCH6 LDA #' FED3 20 7A E9 04061 JSR OUTPUT FED6 68 04062 PLA FED7 60 04063 RTS 04064 FED8 C9 F7 04065 PATCH9 CMP #$F7 ; CHCK LOWER TRANSITION OF TIMER FEDA B0 06 04066 BCS PAT9A FEDC CD 08 A4 04067 CMP TSPEED FEDF 4C 9D EE 04068 JMP CKF3A FEE2 CD 08 A4 04069 PAT9A CMP TSPEED FEE5 68 04070 PLA FEE6 C9 FF 04071 CMP #$FF FEE8 60 04072 PAT9B RTS 04073 FEE9 20 F0 E9 04074 PATC10 JSR CRLF ; CLR DISP (ONLY 1) FEEC 4C 85 E1 04075 JMP STA1 04076 FEEF F0 F7 04077 PATC11 BEQ PAT9B ; GO OUTPUT PROMPT FEF1 C9 4C 04078 CMP #'L' ; NO PROMPT FOR 'T' OR 'L' FEF3 F0 F3 04079 BEQ PAT9B FEF5 4C C5 E7 04080 JMP PROMP1 04081 FEF8 48 04082 PATC12 PHA ; CLEAR PRIFLG SO WE CAN OUTPUT FEF9 AD 11 A4 04083 LDA PRIFLG ; TO PRINTER IF FLG WAS ON (MSB) FEFC 29 F0 04084 AND #$F0 FEFE 8D 11 A4 04085 STA PRIFLG FF01 68 04086 PLA FF02 60 04087 RTS 04088 FF03 AD 12 A4 04089 PATC13 LDA INFLG ; TURN TAPES ON ONLY IF TAPES FF06 C9 54 04090 CMP #'T' FF08 D0 DE 04091 BNE PAT9B FF0A 4C 29 E5 04092 JMP DU14 ; TURN ON TAPES & SET DEF DEV 04093 FF0D AD 13 A4 04094 PATC14 LDA OUTFLG ; TURN ON TAPES ONLY IF TAPES FF10 C9 54 04095 CMP #'T' FF12 D0 D4 04096 BNE PAT9B FF14 4C 0A E5 04097 JMP DU11 04098 FF17 20 F0 E9 04099 PATC15 JSR CRLF ; DECODE COMMAND FF1A 8A 04100 TXA ; SAVE INDEX FF1B 0A 04101 ASL A FF1C AA 04102 TAX FF1D BD B8 FA 04103 LDA JTBL,X ; PART OF ENTRY FF20 8D 1A A4 04104 STA S1 FF23 60 04105 RTS 04106 FF24 20 DD E5 04107 PATC16 JSR CGPC1 ; ADDR TO PC FF27 4C AA FB 04108 JMP STARTM ; BACK TO MNEMONIC START 04109 FF2A F0 0E 04110 PATC17 BEQ PAT17B ; RUB ,SO READ ANOTHER FF2C C9 00 04111 CMP #0 FF2E F0 03 04112 BEQ PAT17A FF30 4C 85 F7 04113 JMP INO2A ; NEITHER ,CONTINUE FF33 20 93 E9 04114 PAT17A JSR INALL ; SKIP ON ZEROS FF36 C9 7F 04115 CMP #$7F ; UNTIL RUB FF38 D0 F9 04116 BNE PAT17A FF3A 4C 7A F7 04117 PAT17B JMP INO2 ; GO BACK 04118 FF3D 20 F8 FE 04119 PATC18 JSR PATC12 ; RESET PRIFLG FF40 48 04120 PHA FF41 20 42 E8 04121 JSR TTYTST ; IF TTY JUST RTN FF44 D0 02 04122 BNE PAT18A FF46 68 04123 PLA FF47 60 04124 RTS FF48 20 FE E8 04125 PAT18A JSR LL ; SET TO LOW SPEED FF4B 20 45 F0 04126 JSR IPST ; PRINT WHAT IS IN BUFFER FF4E 20 44 EB 04127 JSR CLR ; CLR PRINTER BUFFER BY OUTPUTTING FF51 20 3E E8 04128 JSR BLANK ; AN SPACE FF54 20 44 EB 04129 JSR CLR FF57 68 04130 PLA ; RTN ACC FF58 60 04131 RTS 04132 FF59 D8 04133 PAT19 CLD FF5A 20 24 EA 04134 JSR CRCK FF5D 4C 85 E1 04135 JMP STA1 04136 FF60 F0 0D 04137 PAT20 BEQ VECK4 ; END (DATA BYTES=0) FF62 18 04138 CLC FF63 69 04 04139 ADC #4 FF65 AA 04140 TAX FF66 20 93 E9 04141 VECK5 JSR INALL ; SKIP OVER DATA FF69 CA 04142 DEX FF6A D0 FA 04143 BNE VECK5 FF6C 4C 9E E6 04144 JMP VECK1 ; PROCESS NEXT RCD FF6F 4C 20 E5 04145 VECK4 JMP DU13 04146 FF72 A0 00 04147 PAT21 LDY #0 FF74 B9 88 FF 04148 PAT12A LDA POMSG,Y ; RESET MSG FF77 F0 06 04149 BEQ PAT12B FF79 20 7A E9 04150 JSR OUTPUT FF7C C8 04151 INY FF7D D0 F5 04152 BNE PAT12A FF7F 20 F0 E9 04153 PAT12B JSR CRLF FF82 20 F0 E9 04154 JSR CRLF FF85 4C 82 E1 04155 JMP START 04156 FF88 20 20 52 04157 POMSG .byte ' ROCKWELL AIM 65' FF8B 4F 43 4B FF8E 57 45 4C FF91 4C 20 41 FF94 49 4D 20 FF97 36 35 FF99 00 04158 .byte 0 04159 FF9A EE 68 01 04160 PAT22 INC BLKO FF9D 4C BD ED 04161 JMP ADDBK1 04162 FFA0 A9 FF 04163 PAT23 LDA #$FF ; START TIMER FFA2 8D 97 A4 04164 STA DI1024 FFA5 AD 85 A4 04165 PAT23A LDA RINT ; TIME OUT? FFA8 30 08 04166 BMI PAT23B ; YES FFAA AD 0D A8 04167 LDA IFR ; START SIGNAL? FFAD 29 10 04168 AND #MPRST FFAF F0 F4 04169 BEQ PAT23A ; NO FFB1 60 04170 RTS ; YES FFB2 A9 00 04171 PAT23B LDA #0 ; TIME OUT RETURN FFB4 60 04172 RTS 04173 FFB5 20 75 EE 04174 PATC24 JSR CKFREQ ; READ BIT FROM FOURTH HALF PULSE FFB8 6A 04175 ROR A FFB9 29 80 04176 AND #$80 FFBB 60 04177 RTS 04178 FFBC 2C 0D A8 04179 PATC25 BIT IFR ; WAIT TILL TIMES OUT FFBF 50 FB 04180 BVC PATC25 FFC1 AD 04 A8 04181 LDA T1L ; CLR INTERRUPT FLG FFC4 60 04182 RTS 04183 04184 .org $FFF9 04185 ; INTERRUPT VECTORS FFF9 FA 04186 .byte $FA FFFA 75 E0 BF 04187 .word NMIV1,RSET,IRQV1 ; SET UP VECTORS FFFD E0 78 E0 04188 ; .END 04189 04190 04191 04192 04193 04194 ; ****************************************************************************** 04195 ; ****************************************************************************** 04196 ; ****************************************************************************** 04197 ; ****************************************************************************** 04198 ; ****************************************************************************** 04199 04200 ; 04201 ; The following data was not published by Rockwell. 04202 ; It is the "fill-in" data that is present in the ROM 04203 ; but not documented in the Monitor listing. 04204 ; It is probably "leftover" data that got burned into the ROM. 04205 ; 04206 ; It probably has no effect on the Monitor, but it's inclusion in our generated 04207 ; binary data helps us check the integrity of this assembled code against the 04208 ; ROM by comparing CRC-16 checksums of the original ROM and our re-assmbly of 04209 ; the Monitor. If we rebuilt the Monitor properly, the CRC-16 checksums should 04210 ; match 04211 ; 04212 ; 04213 ; It is placed here in line without adding a new line so that it will not 04214 ; interfere with the line numbering. 04215 ; 04216 ; 04217 ; Undocumented Locations $EFB2 - $EFF8 Line 2365 04218 ; $EFFA - $EFFF Line 2367 04219 ; $FFC5 - $FFF8 Line 4184 04220 ; 04221 04222 .org $EFB2 EFB2 4E 20 49 04223 .byte $4E, $20, $49, $54, $20, $49, $4E, $20, $53, $49, $47, $4E EFB5 54 20 49 EFB8 4E 20 53 EFBB 49 47 4E EFBE 20 4F 46 04224 .byte $20, $4F, $46, $20, $41, $20, $28, $4D, $53, $42, $29, $0D EFC1 20 41 20 EFC4 28 4D 53 EFC7 42 29 0D EFCA 52 44 42 04225 .byte $52, $44, $42, $49, $54, $20, $4C, $44, $41, $20, $54, $53 EFCD 49 54 20 EFD0 4C 44 41 EFD3 20 54 53 EFD6 50 45 45 04226 .byte $50, $45, $45, $44, $20, $3B, $41, $52, $45, $20, $57, $45 EFD9 44 20 3B EFDC 41 52 45 EFDF 20 57 45 EFE2 20 49 4E 04227 .byte $20, $49, $4E, $20, $30, $20, $4F, $52, $20, $31, $2D, $36 EFE5 20 30 20 EFE8 4F 52 20 EFEB 31 2D 36 EFEE 20 53 50 04228 .byte $20, $53, $50, $45, $45, $44, $53, $0D, $42, $4D, $49 EFF1 45 45 44 EFF4 53 0D 42 EFF7 4D 49 04229 04230 .org $EFFA EFFA 52 44 42 04231 .byte $52, $44, $42, $49, $54, $34 EFFD 49 54 34 04232 04233 .org $FFC5 FFC5 3B 3B 3B 04234 .byte $3B, $3B, $3B, $3B, $3B, $3B, $3B, $3B, $3B, $3B, $3B, $3B FFC8 3B 3B 3B FFCB 3B 3B 3B FFCE 3B 3B 3B FFD1 3B 3B 3B 04235 .byte $3B, $3B, $3B, $3B, $3B, $3B, $0D, $3B, $4F, $55, $54, $50 FFD4 3B 3B 3B FFD7 0D 3B 4F FFDA 55 54 50 FFDD 55 54 20 04236 .byte $55, $54, $20, $43, $48, $41, $52, $20, $49, $4E, $20, $41 FFE0 43 48 41 FFE3 52 20 49 FFE6 4E 20 41 FFE9 20 54 4F 04237 .byte $20, $54, $4F, $20, $50, $52, $49, $4E, $54, $45, $52, $0D FFEC 20 50 52 FFEF 49 4E 54 FFF2 45 52 0D FFF5 4F 55 54 04238 .byte $4F, $55, $54, $50 FFF8 50 04239 04240 04241 04242 04243 04244 04245 04246 ============================================================ SYMBOL TABLE ============================================================ ABSIND = $FC5C Defined:03739 references:03729 ABSOL = $FCA6 Defined:03773 references:03732 ABSOL1 = $FCB2 Defined:03778 references:03775 ABSX = $FC72 Defined:03749 references:03741 ABSY = $FC63 Defined:03742 references:- ABSY1 = $FC6E Defined:03747 references:03744 ACCUM = $FC23 Defined:03715 references:- ACR = $A80B Defined:00216 references:00876,02640,02696 AD1 = $F928 Defined:03415 references:03122,03479,03516,03617 ADD1 = $E565 Defined:00911 references:00909 ADDA = $F92A Defined:03416 references:03143,03323 ADDA1 = $F933 Defined:03421 references:03419 ADDBK1 = $EDBD Defined:02093 references:00666,02059,04161 ADDBLK = $EDBA Defined:02092 references:- ADDIN = $EAAE Defined:01664 references:00529,00969,01025,01149,04009 ADDN1 = $EAB7 Defined:01668 references:01675 ADDN2 = $EAC7 Defined:01676 references:01670,01672 ADDN3 = $EADC Defined:01686 references:01679 ADDN4 = $EAE8 Defined:01695 references:01699 ADDN5 = $EAF7 Defined:01702 references:01691 ADDN6 = $EAFD Defined:01706 references:01701,01711 ADDN7 = $EB0D Defined:01714 references:01724 ADDN8 = $EB2B Defined:01729 references:01716,01721 ADDNE = $EAB1 Defined:01665 references:01222 ADDR = $A41C Defined:00124 references:00519,00522,00524,00534,00593,00594,00596,00602,00603,00618,00620,00713,00715,00803,00807,00949,00951,00972,00974,01030,01032,01681,01683,01696,01707,01714,01718,01722,01775,01778,03044,03060,03062,03064,03071,03083,03094,03356,03358,03400,03401,03424,03426,03544,03547,03564,03566,03655,03657,03875,03903,03905,04047 ADDRS1 = $F910 Defined:03400 references:00780,03453 ADDS1 = $E55D Defined:00908 references:00832,00947 ADDS1A = $F916 Defined:03402 references:03397 ADFLD = $0133 Defined:00086 references:03687,03693,03707,03751,03765,03829,03833,03936,03940 ASSEM = $D000 Defined:00046 references:00505 ATBOT = $F8E9 Defined:03373 references:03129,03134,03176,03250 ATEND = $F8F9 Defined:03385 references:03525 ATO1 = $F8F7 Defined:03381 references:03365,03368,03376,03378,03388,03391 ATO2 = $F8F5 Defined:03379 references:03389,03392 ATTOP = $F8DB Defined:03363 references:03110,03117 BACKWD = $FDD9 Defined:03923 references:03921 BASIEN = $B000 Defined:00047 references:00509 BASIRE = $B003 Defined:00048 references:00509 BK02 = $E64C Defined:01034 references:01027 BKCK1 = $F1F1 Defined:02667 references:02674 BKCK2 = $F20F Defined:02680 references:02617,02677 BKCK3 = $F21A Defined:02686 references:02683 BKCKSM = $F1E7 Defined:02663 references:02073,02623 BKERR = $E62F Defined:01021 references:01018 BKFLG = $A410 Defined:00113 references:00351,00772,00775,00784,00790,00849,01125 BKOK = $E634 Defined:01023 references:01020 BKS = $0100 Defined:00065 references:01031,01033,01040,01041,01141,01182,01186 BLANK = $E83E Defined:01298 references:00518,00533,00569,00571,00577,00662,00779,01005,01039,01055,01297,01396,03661,03669,03870,03878,04128 BLANK2 = $E83B Defined:01297 references:03050,03663,03664,03863,03864 BLK = $0115 Defined:00150 references:00646,02061,02067,02092,02103 BLKO = $0168 Defined:00152 references:00922,02642,04160 BOTLN = $00E1 Defined:00055 references:03046,03350,03351,03375,03377,03385,03386,03474,03477,03487,03490,03492,03521,03522,03524,03528,03530 BRCOMP = $FD86 Defined:03889 references:03825 BRK1 = $E620 Defined:01014 references:01022 BRK2 = $E6F3 Defined:01132 references:01136 BRK3 = $E6F1 Defined:01131 references:01099,01107,01144 BRK4 = $E6FA Defined:01135 references:01100,01108 BRKA = $E61B Defined:01012 references:00506 BRKK = $E6E5 Defined:01125 references:00509 BRNCHC = $FD0F Defined:03825 references:03809 BT = $F721 Defined:03147 references:03609 BYTESM = $A42F Defined:00088 references:03813,03814,03844,03855,03873,03884,03897,03930 CBUFF1 = $F1E2 Defined:02657 references:02651,02653 CD02 = $FA8F Defined:03593 references:03596 CFLG = $F8B2 Defined:03338 references:03311 CFND1 = $FAA0 Defined:03600 references:03594 CGA = $E5EE Defined:00983 references:00505 CGALL = $E5FC Defined:00996 references:00980,00984,00988,00992,01002 CGPC = $E5D4 Defined:00969 references:00505 CGPC0 = $E5D7 Defined:00970 references:01151 CGPC1 = $E5DD Defined:00972 references:00970,03860,04107 CGPS = $E5EA Defined:00979 references:00506 CGS = $E5FA Defined:00995 references:00506 CGX = $E5F2 Defined:00987 references:00506 CGY = $E5F6 Defined:00991 references:00506 CH = $0130 Defined:00085 references:03962,03965,03972 CH2 = $E2B8 Defined:00580 references:00573 CH3 = $E2C5 Defined:00587 references:00575 CH4 = $E2C0 Defined:00583 references:00578,00581 CHAR1 = $F5AD Defined:02991 references:02947 CHAR2 = $F5B3 Defined:02993 references:02949 CHEKA = $E54E Defined:00898 references:00751,00887 CHEKAR = $E54B Defined:00897 references:00615,00617,00619,00712,00714 CHN1 = $F87C Defined:03313 references:03318 CHN2 = $F88C Defined:03319 references:03315 CHN3 = $F8A9 Defined:03332 references:03334 CHN4 = $F8AF Defined:03335 references:03331 CHNG = $F876 Defined:03311 references:03609 CHNG1 = $E2A6 Defined:00571 references:00585 CHNGG = $E2A0 Defined:00569 references:00505 CKB = $E76B Defined:01181 references:00353 CKB1 = $E780 Defined:01191 references:01185,01188 CKB2 = $E76D Defined:01182 references:01192 CKBUFF = $F1D2 Defined:02649 references:02628,02667,02681 CKER1 = $E396 Defined:00691 references:00680,00696 CKER2 = $E3A3 Defined:00697 references:00693 CKERO = $E38E Defined:00688 references:00685,02088 CKERO0 = $E394 Defined:00690 references:01729,03788 CKERR = $E385 Defined:00685 references:00631,00634,00724,00731,00734 CKF1 = $EE7A Defined:02192 references:02193 CKF2 = $EE81 Defined:02195 references:02214 CKF3 = $EE99 Defined:02207 references:02202 CKF3A = $EE9D Defined:02209 references:04068 CKF4 = $EEA1 Defined:02212 references:02191,02213 CKFREQ = $EE75 Defined:02190 references:02161,02162,02168,02184,02186,02187,04174 CKSUM = $A41E Defined:00125 references:00630,00633,00730,00733,00836,00838,00900,00901,00903,00957,00959,01682,01726,01750,01751,03040,03054 CLR = $EB44 Defined:01743 references:02436,03191,03261,03324,03570,03580,03859,04040,04127,04129 CLRBK = $E6FE Defined:01139 references:00507 CLRCK = $EB4D Defined:01749 references:00614,00700,00802,00939 CLRLUP = $FBE9 Defined:03687 references:03689 CMPBR1 = $FDBB Defined:03911 references:03909 CNTH30 = $A417 Defined:00120 references:00421,01861,01870,01875 CNTL30 = $A418 Defined:00121 references:01859,01872,04018 CODFLG = $A437 Defined:00092 references:03660,03700,03868 COL0 = $F2E1 Defined:02790 references:02788 COL1 = $F321 Defined:02800 references:02788 COL2 = $F361 Defined:02810 references:02788 COL3 = $F3A1 Defined:02820 references:02788 COL4 = $F3E1 Defined:02829 references:02788 COM = $FA78 Defined:03582 references:03587 COMB = $E1C4 Defined:00501 references:00476 COMCN1 = $000B Defined:03605 references:03592 COMIN = $E1A1 Defined:00482 references:00687,01451,01740,02089,02440,03307 COMM = $FA88 Defined:03590 references:03586 COMPBR = $FD9E Defined:03899 references:03891 COMTBL = $FAAC Defined:03607 references:03593 CONVRT = $FD12 Defined:03829 references:03822,03839,03894,03901 CORR = $FB00 Defined:03631 references:03800 COUNT = $A419 Defined:00122 references:00822,00833,01200,01205,01212,03215,03341,03459,03493 CPIY = $A42A Defined:00139 references:00141,00171,01651,01657,01677,01700,01704,01758,01764,01777,01780,01784,01786,01791,01797,01803,01809,01837,01844,01845,01846,01854,02124,02125,02126,02151,02152,02153,02710,02740,03486,03489,03616,03620 CR = $000D Defined:00258 references:00588,01078,01087,01090,01244,01345,01360,01381,01399,01407,01471,01546,01585,01669,02101,02269,02390,03120,03140,03155,03164,03198,03276,03292,03314,03435,04057 CR2J = $EA23 Defined:01571 references:01549,01552,01554,01556 CRA = $AC01 Defined:00247 references:- CRB = $AC03 Defined:00249 references:- CRCK = $EA24 Defined:01576 references:00517,00550,00689,00776,01154,01166,01373,01730,01735,02852,03103,03167,03217,03224,03283,03598,03658,03867,04134 CRCK1 = $EA2C Defined:01580 references:01578 CRCK2 = $EA3B Defined:01587 references:01584 CRLF = $E9F0 Defined:01546 references:00545,00799,00862,01567,03166,04074,04099,04153,04154 CRLOW = $EA13 Defined:01563 references:00425,00514,00555,00783,00873,00971,01038,01054,01353,01581,03034,03037,03077,03233,03242,03306,03576 CUREAD = $FE83 Defined:04021 references:01372,01455,01470 CURPO2 = $A415 Defined:00118 references:00649,00678,00831,01257,01258,01263,01270,01665,01744,01972,01975,02095,02272,02281,02305,03210,03259,03264,03286,03287,03296,03321,04023,04035 CURPOS = $A416 Defined:00119 references:01283,01289,01583,01745,02377,02383,02384,02393 DATIN = $000E Defined:00223 references:02118 DATOUT = $000C Defined:00224 references:02693 DDRA = $A803 Defined:00208 references:- DDRA2 = $A481 Defined:00177 references:- DDRB = $A802 Defined:00207 references:02115 DDRB2 = $A483 Defined:00179 references:- DE1 = $EC18 Defined:01862 references:02024 DE2 = $EC1B Defined:01863 references:01865,01878,02464 DEBK1 = $ED2C Defined:02019 references:01924 DEBKEY = $ED2A Defined:02018 references:01889,01993 DEBTIM = $1388 Defined:00236 references:02021,02023 DEHALF = $EC23 Defined:01870 references:01841,01851 DELAY = $EC0F Defined:01859 references:01431,01840,01847,01850,02222,02227,02238,02245 DI1024 = $A497 Defined:00199 references:04164 DIBUFF = $A438 Defined:00154 references:01285,01706,02096,02098,02107,02109,02280,02291,03158,03202,03443 DILINK = $A406 Defined:00105 references:02262 DISASM = $F46C Defined:02854 references:00554,01159,02850,03866 DISFLG = $A40F Defined:00112 references:00552,01117 DISPLY = $FD6E Defined:03875 references:03881 DIV1 = $A494 Defined:00196 references:- DIV64 = $A496 Defined:00198 references:02164,02167,02172,02175 DIVB = $A495 Defined:00197 references:- DLNE = $F74C Defined:03171 references:03608 DNNO = $F6D8 Defined:03110 references:03149,03221,03573 DNPA7 = $A484 Defined:00183 references:- DON1 = $E7A0 Defined:01214 references:01207 DONE = $E790 Defined:01205 references:00356,01157,03246 DOW1 = $F6E3 Defined:03114 references:03111 DOW2 = $F6E8 Defined:03116 references:03121 DOWN = $F724 Defined:03149 references:03608 DPPA7 = $A485 Defined:00184 references:- DRA = $A80F Defined:00220 references:- DRA2 = $A480 Defined:00176 references:00376,01892,02003 DRAH = $A801 Defined:00206 references:02446,02458,02466 DRB = $A800 Defined:00205 references:00370,00412,00417,00878,01095,01097,01103,01105,01303,01429,01838,01842,02055,02057,02143,02190,02192,02212,02223,02225,02236,02244,02455,02456,02467,02469,02633,02635 DRB2 = $A482 Defined:00178 references:01893,01902,01987,02006 DU0 = $E447 Defined:00777 references:00778 DU1 = $E444 Defined:00776 references:00847 DU10 = $E4DB Defined:00843 references:00812 DU10A = $E4F8 Defined:00856 references:00861 DU11 = $E50A Defined:00864 references:04097 DU12 = $E511 Defined:00867 references:00872 DU13 = $E520 Defined:00873 references:00641,00737,00866,00869,00966,01092,04145 DU14 = $E529 Defined:00877 references:04092 DU1B = $E452 Defined:00781 references:00782 DU2 = $E47D Defined:00799 references:00841 DU6 = $E49F Defined:00816 references:00809 DU7 = $E4A0 Defined:00817 references:00815 DU8 = $E4A2 Defined:00819 references:00814 DU9 = $E4B9 Defined:00829 references:00834 DUK2 = $E5A4 Defined:00946 references:00952 DUMP = $E43B Defined:00772 references:00505 DUMPKI = $E587 Defined:00933 references:00796 DUMPT1 = $E57B Defined:00925 references:00929 DUMPTA = $E56F Defined:00920 references:01337 DV1A = $E46D Defined:00792 references:00785 EDI = $F6B6 Defined:03086 references:03057,03068 EDI1 = $F653 Defined:03044 references:03049 EDI2 = $F663 Defined:03051 references:03052 EDI2B = $F6CC Defined:03097 references:03091 EDI3 = $F673 Defined:03057 references:03058 EDI4 = $F680 Defined:03062 references:03055 EDI5 = $F68D Defined:03068 references:03069 EDI6 = $F69B Defined:03074 references:03081 EDI7 = $F6AA Defined:03080 references:03072 EDI8 = $F6AE Defined:03082 references:03073 EDIO = $F644 Defined:03038 references:03039 EDIT = $F639 Defined:03034 references:00504 EMSG1 = $E06C Defined:00324 references:03035 EMSG2 = $E072 Defined:00325 references:03131,03571 END = $00E5 Defined:00057 references:03063,03065,03070,03080,03387,03390 ENDE2 = $FA6F Defined:03577 references:03575 ENDERR = $FA5C Defined:03570 references:03136,03254,03291,03531 ENPA7 = $A486 Defined:00185 references:- ENTRY = $FA8D Defined:03592 references:03079 EPPA7 = $A487 Defined:00186 references:- EQS = $00BD Defined:00262 references:00305,00306,00312,00313,00317,00318,00321 EQUAL = $E7D8 Defined:01250 references:00996,01664,04052 ERR = $F495 Defined:02877 references:02862,02864 ERRFLG = $FD2B Defined:03841 references:03831,03836 ERRJMP = $FDD6 Defined:03922 references:03895,03902,03925,03928 ERRO = $FA78 Defined:03580 references:03113,03186,03222,03577,03582,03599 ERROR = $FA72 Defined:03578 references:03282 ERRORM = $FCC5 Defined:03788 references:03738,03740,03761,03762,03767,03770,03798,03823,03922,03995 ESCAPE = $001B Defined:00260 references:01420,01433,01448 EVAL = $FC0E Defined:03706 references:03701 FC1 = $F823 Defined:03269 references:03281 FC2 = $F82E Defined:03274 references:03293,03316 FC3 = $F834 Defined:03276 references:03271,03273 FC4 = $F843 Defined:03283 references:03277 FC5 = $F849 Defined:03285 references:03275 FC6 = $F84E Defined:03287 references:03297 FC7 = $F853 Defined:03289 references:03301 FC8 = $F85A Defined:03292 references:03290 FC9 = $F868 Defined:03298 references:03295 FCH = $F81E Defined:03267 references:03258 FCHA1 = $F80F Defined:03259 references:03317 FCHAR = $F80C Defined:03258 references:03312,03609 FNAM = $E8A2 Defined:01356 references:01314,01319,01336,01341 FORM1 = $FD7D Defined:03884 references:03869 FORMA = $0116 Defined:00076 references:02881,02931,02945 FORMD1 = $FD58 Defined:03866 references:03862 FORMD2 = $FD69 Defined:03873 references:03865 FORMDS = $FD45 Defined:03859 references:03849 FORWRD = $FDE0 Defined:03926 references:03919 FROM = $E7A3 Defined:01217 references:00777,03038 GAP = $A409 Defined:00107 references:02699 GCN1 = $E78C Defined:01200 references:01198 GCNT = $E785 Defined:01197 references:00544,01153,03241 GET1 = $EBE2 Defined:01838 references:01839 GET3 = $EBED Defined:01842 references:01849 GETA1 = $EE2B Defined:02150 references:02155 GETFMT = $F499 Defined:02879 references:02876 GETID = $E425 Defined:00760 references:00716,00937 GETK1 = $EC71 Defined:01915 references:01895 GETK10 = $ECEC Defined:01984 references:01966 GETK11 = $ECC9 Defined:01968 references:01964 GETK12 = $ECD2 Defined:01972 references:01977 GETK13 = $ECE1 Defined:01979 references:01969 GETK14 = $ECEB Defined:01983 references:01980 GETK1B = $EC80 Defined:01922 references:01917 GETK2 = $EC82 Defined:01924 references:01419,01920 GETK3 = $EC8D Defined:01931 references:01934 GETK4 = $EC93 Defined:01935 references:01932 GETK5 = $ECA4 Defined:01944 references:01940 GETK6 = $ECB9 Defined:01957 references:01953 GETK7 = $ECBE Defined:01960 references:01938,01947,01951 GETK8 = $ECBF Defined:01963 references:01943,01956,01959 GETKDO = $EC38 Defined:01881 references:01984 GETKEY = $EC40 Defined:01888 references:01445,01978,01982 GETKO = $EC55 Defined:01898 references:01907 GETKOO = $EC67 Defined:01909 references:01904 GETKY = $EC43 Defined:01889 references:01908,01921,01922 GETTAP = $EE29 Defined:02149 references:00702,00720,01495,02043,02050,02130 GETTTY = $EBDB Defined:01834 references:01432,01443,01505 GID1 = $E427 Defined:00761 references:00764 GO = $E261 Defined:00543 references:00504 GOBK = $E26D Defined:00547 references:00359 GOBK0 = $E278 Defined:00551 references:00548 GOBK1 = $E286 Defined:00556 references:00546,00553 GOERR = $E608 Defined:01001 references:00998 GOGO = $FA4A Defined:03560 references:03437,03445,03471,03542 GOGO1 = $FA5B Defined:03568 references:03561 GOTIT = $FE5F Defined:03998 references:03992 HATCH = $FCB6 Defined:03781 references:03726 HATCJ = $FC3D Defined:03726 references:03709 HEX = $EA7D Defined:01632 references:01715,03830 HIST = $A42E Defined:00149 references:00347,00349,01056,01058 HISTM = $A42E Defined:00087 references:- HISTP = $A414 Defined:00117 references:00345,01053,01071 IBITL = $A47A Defined:00164 references:02526,02534,02595 IBITU = $A47B Defined:00165 references:02531,02535,02593 IBUFM = $A460 Defined:00157 references:01286,02392,02404,02519 ICOL = $A475 Defined:00159 references:02476,02556,02559,02567,02573,02576,02581,02597 IDIR = $A474 Defined:00158 references:02474,02553,02570,02585 IDOT = $A477 Defined:00161 references:01882,02429,02453,02481 IER = $A80E Defined:00219 references:- IEVEN = $F486 Defined:02867 references:02860 IFR = $A80D Defined:00218 references:01863,02447,02724,04167,04179 IMASK = $A47C Defined:00166 references:02479,02524,02588 IMMED1 = $FCC1 Defined:03786 references:03783 IN = $F764 Defined:03184 references:03608 INALL = $E993 Defined:01489 references:00611,00640,00744,00745,00747,01077,01080,01083,01086,01089,03192,04114,04141 INCP = $F121 Defined:02553 references:02517 INCS2 = $E566 Defined:00913 references:00840,00851 INDX = $FC81 Defined:03756 references:03753 INFLG = $A412 Defined:00115 references:00741,01237,01310,01400,01489,01576,02072,02080,02649,03230,04089 INL = $F76D Defined:03187 references:03184,03234 INLOW = $E8F8 Defined:01399 references:01404 INLUP = $FE35 Defined:03974 references:03978 INO2 = $F77A Defined:03192 references:03197,03205,03211,03328,04117 INO2A = $F785 Defined:03196 references:04113 INO3 = $F7A8 Defined:03212 references:03199 INO3A = $F7B9 Defined:03219 references:03105 INO3B = $F799 Defined:03206 references:03201 INO5 = $F7C5 Defined:03223 references:03214,03216 INPU = $F7CB Defined:03229 references:03608 INPU1 = $F7D8 Defined:03234 references:03232,03236 INTAB1 = $E743 Defined:01171 references:00369 INTAB2 = $E752 Defined:01175 references:00375 INTAB3 = $E756 Defined:01177 references:00380,00383,00389 IOFFST = $A476 Defined:00160 references:02478,02562,02565,02579,02582,02605 IOUTL = $A478 Defined:00162 references:02457,02528,02529,02591 IOUTU = $A479 Defined:00163 references:02454,02532,02533,02540,02542,02592 IPO0 = $F050 Defined:02415 references:01883 IPO2 = $F066 Defined:02426 references:02418,02420,02431 IPO3 = $F073 Defined:02432 references:04045 IPO4 = $F078 Defined:02434 references:02412 IPS1 = $F0E8 Defined:02519 references:02538 IPS2 = $F10E Defined:02534 references:02525,02530 IPS3 = $F105 Defined:02531 references:02527 IPSO = $F04A Defined:02413 references:01981 IPST = $F045 Defined:02411 references:02387,04126 IPSU = $F0E3 Defined:02516 references:02414,02463 IRQ1 = $E163 Defined:00448 references:00443 IRQ2 = $E17F Defined:00463 references:00355 IRQV1 = $E078 Defined:00329 references:04187 IRQV2 = $A404 Defined:00102 references:00329 IRQV3 = $E154 Defined:00439 references:01177 IRQV4 = $A400 Defined:00100 references:00445 ISX = $FE03 Defined:03946 references:03942 JD1 = $E723 Defined:01156 references:01167 JD2 = $E72B Defined:01159 references:01155 JD3 = $E73C Defined:01166 references:01164 JD4 = $E742 Defined:01168 references:01158 JMPR = $E1C1 Defined:00497 references:00495 JTBL = $FAB8 Defined:03608 references:03601,04103 JUMP = $A47D Defined:00167 references:00492,00494,00497,02522,02601,02603 KDISA = $E70A Defined:01147 references:00508,01150 KEP = $E7AF Defined:01225 references:00516,00656,00664,01013,01132,01221,01231,01378,01467,01738,02439,03036,03132,03326,03572 KEPR = $E970 Defined:01467 references:00844,01309,01330,01359 KEYF1 = $010C Defined:00070 references:00511 KEYF2 = $010F Defined:00071 references:00511 KEYF3 = $0112 Defined:00072 references:00511 KI2 = $F8B8 Defined:03341 references:03339 KIFLG = $F8B6 Defined:03340 references:03171,03187 KMASK = $A42A Defined:00171 references:01913,01995,02007,02020 LDAY = $EB58 Defined:01758 references:00535,00884,02523,03469,03540,03876,04048 LDIY = $A42A Defined:00141 references:01761,01763,01766,01768,01769 LENGTH = $00EA Defined:00060 references:01162,02883,02929,02967,03161,03179,03212,03431,03456,03457,03495,03497,03503 LF = $000A Defined:00259 references:01557,02248,03196 LL = $E8FE Defined:01404 references:00483,00688,00879,03578,03584,04125 LMNEM = $0117 Defined:00077 references:02908,02915 LOAD = $E2E6 Defined:00609 references:00505 LOAD1 = $E2E9 Defined:00611 references:00613,00635 LOAD1A = $E349 Defined:00657 references:00661 LOAD2 = $E306 Defined:00624 references:00627 LOAD4 = $E321 Defined:00636 references:00622 LOAD5 = $E323 Defined:00637 references:00639 LOADK1 = $E3A7 Defined:00701 references:00706 LOADK2 = $E3AA Defined:00702 references:00707 LOADK3 = $E3B7 Defined:00708 references:00704 LOADK5 = $E3D1 Defined:00719 references:00728 LOADK6 = $E3D3 Defined:00720 references:00726 LOADK7 = $E3E8 Defined:00729 references:00722 LOADKI = $E3A4 Defined:00700 references:00718,01320 LOADT2 = $E364 Defined:00669 references:00674 LOADTA = $E32F Defined:00645 references:00651,00671,01315 LST = $F7E1 Defined:03240 references:03609 LST3 = $F803 Defined:03252 references:03247 LSTO1 = $F7F0 Defined:03245 references:03251 LSTO2 = $F7F8 Defined:03248 references:03244 LT10 = $EA5A Defined:01610 references:01608 M1 = $E000 Defined:00305 references:00515,00655,00663,00679,00690,00691,00843,01012,01131,01135,01220,01225,01308,01329,01358,01377,01737,02438,03035,03131,03325,03571 M10 = $E02D Defined:00313 references:01329 M11 = $E031 Defined:00314 references:01737 M12 = $E03B Defined:00315 references:02438 M3 = $E005 Defined:00306 references:01220,03325 M4 = $E008 Defined:00307 references:00515 M5 = $E01C Defined:00308 references:00843 M6 = $E021 Defined:00309 references:01135 M7 = $E024 Defined:00310 references:01131 M8 = $E027 Defined:00311 references:01012 M9 = $E02A Defined:00312 references:01308 MATCH = $FE51 Defined:03990 references:03986 MATCH1 = $FE5C Defined:03995 references:03989 MCM2 = $E196 Defined:00476 references:00479 MCM3 = $E1AC Defined:00488 references:00477 MCNT = $0020 Defined:00500 references:00475 MEIN = $E24D Defined:00531 references:01009 MEM = $E248 Defined:00529 references:00314,00504 MEM1 = $E24F Defined:00532 references:00526 MEM2 = $E251 Defined:00533 references:00539 MEM3 = $E260 Defined:00540 references:00530 MEMERR = $EB33 Defined:01735 references:00582,00755,03084,03567 MNEENT = $FB9E Defined:03654 references:00508 MNEM = $FE06 Defined:03951 references:03665 MNEML = $F5B9 Defined:02995 references:02907,03985 MNEMR = $F5F9 Defined:03005 references:02909,03991 MNNDX1 = $F4AF Defined:02891 references:02900 MNNDX2 = $F4B3 Defined:02894 references:02897 MNNDX3 = $F4BA Defined:02899 references:02890,02892 MODE = $F55B Defined:02978 references:02869 MODE2 = $F59F Defined:02989 references:02880 MODEM = $FBC1 Defined:03666 references:04004 MOFF = $00E0 Defined:00228 references:01173,02118,02432,02693 MON = $00C0 Defined:00227 references:02415 MONCOM = $E1E5 Defined:00504 references:00491,00493 MONRAM = $A400 Defined:00098 references:01127,01130,01134,01760,01762 MOVAD = $0126 Defined:00081 references:00083,03904,03908,03910,03913,03916,03955,03975,03976,03984,03990 MPRST = $0010 Defined:00230 references:04168 MR11A = $F512 Defined:02941 references:02938 MREAD = $FAD0 Defined:03612 references:01498 MSP12 = $0002 Defined:00231 references:02448 MT2 = $0020 Defined:00232 references:01864 MTBL = $F2D7 Defined:02788 references:02600,02602 NAME = $A42E Defined:00144 references:00149,00670,00761,00765,00767,00925,01385,01393 NAMO = $E8CF Defined:01377 references:01357 NAMO1 = $E8D6 Defined:01380 references:01388 NAMO2 = $E8E9 Defined:01390 references:01382,01384 NAMO3 = $E8EB Defined:01391 references:01395 NAMO4 = $E8F5 Defined:01396 references:01392 NEWCOL = $F163 Defined:02590 references:02560,02568,02577,02583 NEWROW = $F160 Defined:02588 references:02571 NH1 = $E690 Defined:01071 references:01069 NHIS = $E688 Defined:01066 references:00350,01060 NMI4 = $E0B1 Defined:00355 references:00357 NMI5 = $E0B4 Defined:00356 references:00352,00354 NMIV1 = $E075 Defined:00328 references:04187 NMIV2 = $A402 Defined:00101 references:00328,00381,00384,00390 NMIV3 = $E07B Defined:00332 references:01177 NOUT = $EA51 Defined:01605 references:01602 NOWLN = $00DF Defined:00054 references:03076,03119,03137,03153,03289,03346,03347,03357,03359,03363,03366,03373,03374,03395,03396,03407,03408,03411,03417,03418,03420,03423,03425,03436,03444,03470,03513,03535,03536,03538,03541,03560,03563,03565,03615 NOWS1 = $F909 Defined:03395 references:03532 NPUL = $A40A Defined:00109 references:02718,02774 NULLC = $00FF Defined:00257 references:01559,02250 NUMA = $EA46 Defined:01597 references:00536,00895,00958,00960,01057,01059,01593,02104,02903,02942,03877 NXT5 = $E60D Defined:01005 references:00506 NXTA1 = $E2DA Defined:00597 references:00595 NXTADD = $E2CD Defined:00591 references:00587,00757,00798,01007,01736,03885 OK = $FDE7 Defined:03929 references:03924,03927 OLDLEN = $00E9 Defined:00059 references:03162,03189,03320,03432,03454,03505,03506 ONEBYT = $FD3E Defined:03854 references:03807 ONEK1 = $ED09 Defined:02001 references:02015 ONEK2 = $ED0B Defined:02003 references:01901,02000 ONEK3 = $ED1C Defined:02009 references:02012 ONEK4 = $ED29 Defined:02016 references:02010 ONEKEY = $ED05 Defined:01999 references:01915 OP03 = $F144 Defined:02573 references:02554 OP04 = $F130 Defined:02562 references:02557 OP05 = $F150 Defined:02579 references:02575 OP06 = $F15D Defined:02585 references:02580 OP07 = $F13F Defined:02570 references:02563 OPCMP1 = $FCD5 Defined:03796 references:03793 OPCODE = $A434 Defined:00091 references:03801,03802,03837,03846,03912,03914,03915,03917,03923,03926,03952,03953,03954,04003 OPCOMP = $FCCB Defined:03792 references:03682,03716,03723,03725,03735,03737,03746,03748,03750,03757,03764,03772,03777,03779,03785,03787 OUT04 = $F025 Defined:02392 references:02379 OUT05 = $F033 Defined:02398 references:02391,02396 OUT1 = $E97B Defined:01476 references:01540 OUT1A = $E986 Defined:01481 references:01478 OUT2 = $E98F Defined:01485 references:01482 OUTA1 = $E9C8 Defined:01518 references:01514 OUTA2 = $E9D0 Defined:01523 references:01519 OUTA3 = $E9E2 Defined:01534 references:01524 OUTA4 = $E9EA Defined:01539 references:01535 OUTALL = $E9BC Defined:01510 references:01547,01558,01560,01610,02920,02948,02951,02966,03157 OUTCK = $E538 Defined:00887 references:00823,00825,00827,00942,00944 OUTCK1 = $E53B Defined:00888 references:00837,00839,00855,00857,00859,00938 OUTCK2 = $E547 Defined:00894 references:00891 OUTCKS = $E531 Defined:00882 references:00829,00946 OUTD1 = $EF14 Defined:02274 references:02270 OUTD1A = $EF17 Defined:02275 references:04042 OUTD2 = $EF20 Defined:02280 references:02276 OUTD2A = $EF2F Defined:02287 references:01269,02284 OUTD3 = $EF33 Defined:02290 references:02297 OUTD4 = $EF48 Defined:02299 references:02283 OUTD5 = $EF56 Defined:02307 references:02273,02314 OUTD7 = $EF76 Defined:02325 references:02285,02304,02308,02315,04041 OUTDD1 = $EF7B Defined:02331 references:00431,02293,02301,02311,04027,04039 OUTDD2 = $EF87 Defined:02340 references:02342 OUTDD3 = $EF8B Defined:02343 references:02339 OUTDIS = $EF05 Defined:02267 references:01177,01245,02252 OUTDP = $EEFC Defined:02258 references:01486 OUTDP1 = $EF02 Defined:02262 references:01262,01480,01588 OUTFLG = $A413 Defined:00116 references:00792,00864,00889,01331,01408,01511,01550,01564,01569,02100,02102,02105,02650,03163,04094 OUTL1 = $E906 Defined:01409 references:- OUTLOW = $E901 Defined:01407 references:01566 OUTLUP = $FE30 Defined:03972 references:03980 OUTO1 = $F00F Defined:02381 references:02376 OUTPR = $F038 Defined:02401 references:01291,02385,02397 OUTPR1 = $F03A Defined:02402 references:02406 OUTPR2 = $F044 Defined:02407 references:02403 OUTPRI = $F000 Defined:02373 references:01346,01529,01586,02258 OUTPUT = $E97A Defined:01475 references:00469,00473,00658,00694,01148,01228,01243,04008,04054,04059,04061,04150 OUTT1 = $EECB Defined:02232 references:02241 OUTT2 = $EEFB Defined:02253 references:02249,02251 OUTTA1 = $F290 Defined:02745 references:02714 OUTTA2 = $F294 Defined:02747 references:02763 OUTTA3 = $F2B2 Defined:02759 references:02754,02761 OUTTAP = $F24A Defined:02710 references:00935,00955,00963,00964,01521,02626,02629,02701,02702,02703,02704 OUTTTY = $EEA8 Defined:02219 references:01484 PACK = $EA84 Defined:01638 references:00723,00746,00748,00766,00768,01623,01626,01720,03835 PAK1 = $EA96 Defined:01647 references:01643 PAK2 = $EA9F Defined:01653 references:01656 PAREN = $FC76 Defined:03751 references:03711 PAT12A = $FF74 Defined:04148 references:04152 PAT12B = $FF7F Defined:04153 references:04149 PAT17A = $FF33 Defined:04114 references:04112,04116 PAT17B = $FF3A Defined:04117 references:04110 PAT18A = $FF48 Defined:04125 references:04122 PAT19 = $FF59 Defined:04133 references:00467 PAT20 = $FF60 Defined:04137 references:01084 PAT21 = $FF72 Defined:04147 references:00426 PAT22 = $FF9A Defined:04160 references:02641 PAT23 = $FFA0 Defined:04163 references:02417,02419 PAT23A = $FFA5 Defined:04165 references:04169 PAT23B = $FFB2 Defined:04171 references:04166 PAT2A = $FE91 Defined:04028 references:04025 PAT4A = $FEAE Defined:04042 references:04037 PAT9A = $FEE2 Defined:04069 references:04066 PAT9B = $FEE8 Defined:04072 references:04077,04079,04091,04096 PATC10 = $FEE9 Defined:04074 references:00589 PATC11 = $FEEF Defined:04077 references:01239 PATC12 = $FEF8 Defined:04082 references:01267,03193,04119 PATC13 = $FF03 Defined:04089 references:03218 PATC14 = $FF0D Defined:04094 references:03253 PATC15 = $FF17 Defined:04099 references:03600 PATC16 = $FF24 Defined:04107 references:03886,04011 PATC17 = $FF2A Defined:04110 references:03195 PATC18 = $FF3D Defined:04119 references:01028,01450 PATC24 = $FFB5 Defined:04174 references:02188 PATC25 = $FFBC Defined:04179 references:02752,02759,04180 PATC8C = $FED1 Defined:04060 references:04058 PATCH1 = $FE7C Defined:04016 references:00424 PATCH4 = $FE9C Defined:04035 references:02274 PATCH5 = $FEB1 Defined:04044 references:02437 PATCH6 = $FEB7 Defined:04047 references:03087 PATCH8 = $FEBC Defined:04050 references:03591 PATCH9 = $FED8 Defined:04065 references:- PCADJ3 = $F54D Defined:02969 references:02955 PCADJ4 = $F554 Defined:02973 references:02971 PCLLD = $EB56 Defined:01757 references:02857,02902,02933 PCR = $A80C Defined:00217 references:02119,02416,02433,02450,02452,02694 PHXY = $EB9E Defined:01791 references:01256,01356,01440,02031,02220,02268,02374,02615 PINT = $F0CB Defined:02473 references:02413 PLNE = $F727 Defined:03152 references:03112,03128,03175,03177,03181,03219,03248,03262,03335,03608 PLXY = $EBAC Defined:01803 references:01292,01370,01446,02039,02246,02277,02325,02398,02644 PNTLUP = $FBD0 Defined:03672 references:03675 PO0 = $F749 Defined:03167 references:03165 PO1 = $F73B Defined:03161 references:03154,03156 PO2 = $F729 Defined:03153 references:03160 PO3 = $F73F Defined:03163 references:03252 POMSG = $FF88 Defined:04157 references:04148 PR1 = $E7CC Defined:01243 references:01248,01251,01295,01299 PR2 = $E7CF Defined:01244 references:01241 PRADR1 = $F4F7 Defined:02927 references:02953 PRADR2 = $F4FF Defined:02931 references:02944 PRADR3 = $F519 Defined:02945 references:02928,02930 PRADR4 = $F52C Defined:02952 references:02946,02950 PRBL2 = $F545 Defined:02965 references:02854,02904,02923 PRDOT0 = $F08C Defined:02447 references:02449 PRIERR = $F079 Defined:02436 references:02421 PRIFLG = $A411 Defined:00114 references:00654,00665,00676,00681,01121,01476,01526,01531,02093,02110,02411,03208,03209,04044,04083,04085 PRITR = $E6E1 Defined:01121 references:01970 PRMN1 = $F4D7 Defined:02912 references:02922 PRMN2 = $F4DB Defined:02914 references:02918 PRNDOT = $F087 Defined:02445 references:02426,02427 PRNTYX = $F538 Defined:02960 references:02958 PROMP1 = $E7C5 Defined:01240 references:04080 PROMPT = $E7BD Defined:01237 references:03190,03268 PRPC = $F53C Defined:02962 references:02855,03871 PRST = $0000 Defined:00225 references:01173,02415,02432 PRTIME = $06A4 Defined:00235 references:02459,02461 PSL0 = $E7FB Defined:01267 references:01260 PSL1 = $E837 Defined:01294 references:00543,01014,01152,01255,03240 PSLO0 = $E802 Defined:01270 references:01264 PSLOA = $E814 Defined:01278 references:01274 PSLOB = $E81C Defined:01282 references:01272 PSLOC = $E81E Defined:01283 references:01277,01281 PSLOD = $E823 Defined:01285 references:01290 PSLS = $E7DC Defined:01254 references:01454 QM = $E7D4 Defined:01247 references:00481,01001,01021,01368,03579,03597 R001 = $ED00 Defined:01994 references:01989 R10 = $F9C7 Defined:03497 references:03494 R100 = $F9CF Defined:03503 references:03449 R101 = $F9DA Defined:03509 references:03507 R102 = $F9E3 Defined:03513 references:03517 R103 = $F9FA Defined:03525 references:03523 R104 = $FA17 Defined:03539 references:03537,03555 R105 = $FA31 Defined:03549 references:03545 R1051 = $FA41 Defined:03555 references:03553 R106 = $FA44 Defined:03556 references:03548 R107 = $FA0A Defined:03532 references:03526 R108 = $F9EF Defined:03518 references:03515 R11 = $F9CC Defined:03500 references:03496 R2W = $F95F Defined:03449 references:03433 R5 = $F99D Defined:03479 references:03475 R55 = $F9A8 Defined:03483 references:03481 R6 = $F984 Defined:03468 references:03466,03483 R7 = $F9AB Defined:03484 references:03478 R8 = $F947 Defined:03435 references:03500 R87 = $F94E Defined:03440 references:03434,03498 R88 = $F953 Defined:03443 references:03447 R9 = $F9BE Defined:03493 references:03491,03557 RA = $AC00 Defined:00246 references:00405,02349,02356,02359,02361 RB = $AC02 Defined:00248 references:00406,02353 RB2 = $E95C Defined:01454 references:01462 RBYT1 = $E407 Defined:00745 references:00743 RBYTE = $E3FD Defined:00741 references:00624,00629,00632,00637,00708,00729,00732,00897 RCH2 = $E91F Defined:01424 references:01426 RCH3 = $E925 Defined:01427 references:01417,01423 RCHEK = $E907 Defined:01413 references:00358,00551,00800,01156,03245 RCHT1 = $E93B Defined:01437 references:01428,01449,01472 RCHT2 = $E928 Defined:01429 references:01430,01436 RCHTTY = $E926 Defined:01428 references:01414 RD1 = $EA70 Defined:01623 references:01620 RD2 = $EA5D Defined:01614 references:00572,00997,01197 RDADDR = $FBE5 Defined:03685 references:03680,03692 RDBIT = $EE3B Defined:02159 references:02123,02150 RDBIT1 = $EE43 Defined:02162 references:02163 RDBIT2 = $EE51 Defined:02168 references:02169 RDBIT4 = $EE67 Defined:02184 references:02160,02185 RDLUP = $FE14 Defined:03956 references:03960,03968 RDR1 = $E96A Defined:01461 references:01457 RDRUB = $E95F Defined:01455 references:01380,01464,01504,01668,03269,03690,03697,03956 REA1 = $E956 Defined:01450 references:01421,01434 READ = $E93C Defined:01440 references:03313,04030,04032,04050 READ1 = $E94A Defined:01445 references:01442 READ2 = $E94D Defined:01446 references:01444 RED1 = $FE96 Defined:04032 references:00470 RED2 = $E976 Defined:01471 references:01459,04033 REDOUT = $E973 Defined:01470 references:01015,01614,01625 REENTR = $F6CF Defined:03103 references:00504 REG = $E227 Defined:00514 references:00504 REG1 = $E232 Defined:00518 references:00549,02851 REGF = $A40E Defined:00111 references:00547,01112,02849 REGQ = $F461 Defined:02849 references:00463 REGT = $E6D9 Defined:01112 references:00507 RELADR = $F530 Defined:02955 references:02934 REP2 = $F93E Defined:03427 references:03442 REPLAC = $F93F Defined:03431 references:03180,03223 RESNOW = $F8D0 Defined:03356 references:03484,03556 RINT = $A485 Defined:00190 references:04165 RMNEM = $0118 Defined:00078 references:02910,02914 ROLLFL = $A47F Defined:00170 references:01990,02008 ROONEK = $ECEF Defined:01987 references:01415,01424,01888,01992 ROUT = $F286 Defined:02737 references:02732 ROUT1 = $F28B Defined:02739 references:02764 ROW1 = $F421 Defined:02839 references:01935 ROW2 = $F429 Defined:02840 references:- ROW3 = $F431 Defined:02841 references:- ROW4 = $F439 Defined:02842 references:- ROW5 = $F441 Defined:02843 references:- ROW6 = $F449 Defined:02844 references:- ROW7 = $F451 Defined:02845 references:- ROW8 = $F459 Defined:02846 references:- RQP = $F977 Defined:03462 references:03458,03460 RS1 = $E0C9 Defined:00369 references:00372 RS2 = $E0D4 Defined:00375 references:00378 RS20 = $E702 Defined:01141 references:01143 RS3 = $E0F3 Defined:00389 references:00387,00393 RS3A = $E0F1 Defined:00388 references:00382,00385 RS3B = $E11A Defined:00408 references:00404 RS4 = $E11D Defined:00412 references:00414 RS5 = $E129 Defined:00417 references:00418 RS6 = $E13E Defined:00425 references:00436 RS7 = $E144 Defined:00427 references:00413 RS8 = $E146 Defined:00428 references:00435 RSET = $E0BF Defined:00362 references:04187 RSPAC = $EA7B Defined:01628 references:01616,01618,01622,01624,01639,01641,01645 RTMODE = $F491 Defined:02875 references:02870 RTS-BLANK = $A42D Defined:00140 references:- RTS1 = $F55A Defined:02976 references:02974 RUB = $0008 Defined:00261 references:01456 S1 = $A41A Defined:00123 references:00805,00808,00824,00826,00882,00908,00910,00941,00943,00948,00950,03047,03402,03403,03464,03465,03467,03468,03473,03476,03480,03482,03539,03543,03546,03550,03551,03554,03602,03603,04104 S2 = $0106 Defined:00126 references:00788,00789,00856,00858,00913,00915 SADDR = $EB78 Defined:01774 references:00580,00753,03090,03093,03847 SAVA = $A421 Defined:00130 references:00332,00439,00444,00566,00709,00717 SAVE = $00E7 Defined:00058 references:03352,03353,03527,03529 SAVNOW = $F934 Defined:03423 references:03056,03066,03452,03510 SAVPC = $A425 Defined:00134 references:00339,00341,00346,00348,00456,00459,00519,00560,00562,00973,00975,01160,01163,01165,01184,01187,01757,02962,02963,02969,02973,03654,03656 SAVPS = $A420 Defined:00129 references:00334,00449,00521,00523,00564,00999 SAVS = $A424 Defined:00133 references:00343,00366,00461,00484,00556 SAVX = $A422 Defined:00131 references:00336,00450,00559 SAVY = $A423 Defined:00132 references:00337,00451,00558 SEMI = $E9BA Defined:01508 references:00820,00852 SETBOT = $F8C5 Defined:03350 references:03147,03511 SETREG = $E113 Defined:00405 references:00397,00400,00403 SETSP1 = $F2CA Defined:02774 references:02772 SETSP2 = $F2D3 Defined:02778 references:02776 SETSPD = $F2C0 Defined:02769 references:02690 SETZ = $F282 Defined:02735 references:02731 SH1 = $E652 Defined:01039 references:01046 SHI1 = $E66A Defined:01053 references:01062 SHIS = $E665 Defined:01051 references:00507 SHOW = $E64D Defined:01037 references:00507 SIZEM = $FB0F Defined:03633 references:03805 SP12 = $0001 Defined:00226 references:01173,02415,02432 SR = $A80A Defined:00215 references:- SRCHLP = $FE44 Defined:03984 references:03994 SRCHM = $FE47 Defined:03985 references:03988 STA1 = $E185 Defined:00468 references:04075,04135 START = $E182 Defined:00467 references:00486,00496,04155 STARTM = $FBAA Defined:03658 references:03789,04108 STASH = $FD2C Defined:03844 references:03824,03856,03898,03931 STBKEY = $A42B Defined:00172 references:01910,01918,01930,02004,02013 STBYTE = $E413 Defined:00751 references:00625,00727 STCODE = $FB1E Defined:03636 references:04002 STIY = $A427 Defined:00138 references:01052,01061,01634,01654,01658,01776,01779,01782,01788,02221,02226,02229,02230,02231,02232,02233,02235,02243,02290,02295,02296,02309,02312,02313,02343,02346,02712,02717,02730,02737,02746,02753,02926,02937,02939,03284,03300,03319 STLO = $FE6E Defined:04007 references:04010 STLOAD = $FE73 Defined:04009 references:03958 STOP = $F870 Defined:03306 references:03609 STOR1 = $FC0A Defined:03702 references:03699 STORCH = $FBF6 Defined:03693 references:03703 STRING = $00EB Defined:00061 references:03278,03294 STSHLP = $FD30 Defined:03846 references:03852 SUB = $F91D Defined:03407 references:03115,03116,03332,03549 SUB1 = $F927 Defined:03412 references:03410 SWST1 = $EBBD Defined:01815 references:01825 SWSTAK = $EBBA Defined:01813 references:01796,01804 SYNC = $EDFF Defined:02123 references:02128,02132 SYNC1 = $EE11 Defined:02130 references:02134 T1CH = $A805 Defined:00210 references:02698 T1FR = $00C0 Defined:00239 references:02695 T1I = $0000 Defined:00238 references:00875,01172,02639 T1L = $A804 Defined:00209 references:02726,04181 T1LH = $A807 Defined:00212 references:02723,02751,02758 T1LL = $A806 Defined:00211 references:02721,02749,02756 T2H = $A809 Defined:00214 references:00416,00419,01862,01877,02195,02200,02462 T2I = $0000 Defined:00237 references:01172 T2L = $A808 Defined:00213 references:00422,01860,01874,02022,02121,02197,02460 TABUF2 = $00AD Defined:00153 references:02655,02686 TABUFF = $0116 Defined:00151 references:00650,00657,00669,02036,02051,02063,02068,02070,02075,02078,02658,02664,02665,02669,02670,02672,02676,02679,02684 TABY2 = $F1A7 Defined:02628 references:02632 TABY3 = $F1CE Defined:02644 references:02621 TAISET = $EDEA Defined:02114 references:00701,02042 TAOS1 = $F238 Defined:02700 references:02706 TAOSET = $F21D Defined:02690 references:00933,02624 TAP1 = $E8B3 Defined:01363 references:01361 TAP2 = $E8BC Defined:01368 references:01365 TAP3 = $E8C2 Defined:01370 references:01367 TAPIN = $A434 Defined:00145 references:01371,02116 TAPOUT = $A435 Defined:00146 references:02691 TAPTR = $A436 Defined:00147 references:00675,02032,02038,02066 TAPTR2 = $A437 Defined:00148 references:00867,00923,02616,02619,02638 TEMPA = $A433 Defined:00090 references:03810,03815 TEMPX = $A431 Defined:00089 references:03706,03712,03728,03889 TEXT = $00E3 Defined:00056 references:03045,03344,03345,03364,03367 TIB1 = $ED48 Defined:02036 references:02034 TIBY1 = $ED53 Defined:02042 references:00647,02035,02047 TIBY3 = $ED56 Defined:02043 references:02048 TIBY4 = $ED63 Defined:02049 references:02045 TIBY5 = $ED65 Defined:02050 references:02054 TIBY5A = $ED88 Defined:02065 references:02062 TIBY6 = $EDAF Defined:02083 references:02076 TIBY7 = $EDB0 Defined:02084 references:02064,02079 TIBYTE = $ED3B Defined:02031 references:01492 TIMG = $A40B Defined:00110 references:02720,02778 TIOS1 = $EE22 Defined:02142 references:02139 TIOS2 = $EE24 Defined:02143 references:02141 TIOSET = $EE1C Defined:02139 references:02117,02692 TMASK1 = $0126 Defined:00083 references:03667,03672,03794 TMASK2 = $0127 Defined:00084 references:03668,03673,03797 TMSG0 = $E048 Defined:00316 references:00655 TMSG1 = $E04D Defined:00317 references:01377 TMSG2 = $E050 Defined:00318 references:01358 TMSG3 = $E052 Defined:00319 references:00690 TMSG5 = $E05F Defined:00321 references:- TMSG6 = $E061 Defined:00322 references:00663 TMSG7 = $E066 Defined:00323 references:00679 TO = $E7A7 Defined:01220 references:00781,03051 TO1 = $E7A9 Defined:01221 references:01218 TOBYTE = $F18B Defined:02615 references:00871,00893,00924,00926,01516,02643 TOGL = $E6E7 Defined:01127 references:01113,01118,01122 TOGL1 = $E6F6 Defined:01133 references:01128 TOGTA1 = $E6BD Defined:01095 references:00508 TOGTA2 = $E6CB Defined:01103 references:00508 TOPNO = $F8BC Defined:03344 references:03053,03074,03104 TP = $F6D2 Defined:03104 references:03609 TPO1 = $F8C0 Defined:03346 references:03354 TRACE = $E6DD Defined:01117 references:00507 TRY = $F258 Defined:02716 references:02738 TRY34 = $FC40 Defined:03727 references:03718 TRY56 = $FC5A Defined:03738 references:03696 TRYINY = $FC85 Defined:03758 references:03755 TRYJMP = $FC94 Defined:03765 references:03759 TRYZP = $FC28 Defined:03717 references:03714 TSPEED = $A408 Defined:00106 references:02159,02201,02204,02208,02713,02769,04067,04069 TTYTST = $E842 Defined:01302 references:01240,01254,01413,01441,01481,01548,01580,03574,03861,04121 TYPE = $012E Defined:00082 references:03670,03678,03719,03743,03768,03773,03781,03999 TYPTB = $FB5E Defined:03644 references:03998 TYPTR1 = $FAE2 Defined:03627 references:03792 TYPTR2 = $FAF1 Defined:03629 references:03796 UACR = $A00B Defined:00040 references:- UDDRA = $A003 Defined:00032 references:- UDDRB = $A002 Defined:00031 references:- UDRA = $A00F Defined:00044 references:- UDRAH = $A001 Defined:00030 references:- UDRB = $A000 Defined:00029 references:- UIER = $A00E Defined:00043 references:- UIFR = $A00D Defined:00042 references:- UIN = $0108 Defined:00066 references:01324,01502 UOUT = $010A Defined:00067 references:01351,01537 UP = $F6F9 Defined:03127 references:03185,03608 UP1 = $F713 Defined:03137 references:03135,03141 UP4 = $F720 Defined:03144 references:03118,03130,03138 UPCR = $A00C Defined:00041 references:- UPNO = $F709 Defined:03133 references:03127,03220,03235,03249,03274 USR = $A00A Defined:00039 references:- UT1CH = $A005 Defined:00034 references:- UT1L = $A004 Defined:00033 references:- UT1LH = $A007 Defined:00036 references:- UT1LL = $A006 Defined:00035 references:- UT2CH = $A009 Defined:00038 references:- UT2L = $A008 Defined:00037 references:- VALID = $FCDD Defined:03799 references:03795 VECK1 = $E69E Defined:01080 references:01082,04144 VECK2 = $E6AC Defined:01086 references:01079,01088,01091 VECK4 = $FF6F Defined:04145 references:04137 VECK5 = $FF66 Defined:04141 references:04143 VECKSM = $E694 Defined:01076 references:00508 WHE1 = $E85C Defined:01316 references:01312 WHE2 = $E868 Defined:01321 references:01317 WHE3 = $E870 Defined:01325 references:01322 WHEREI = $E848 Defined:01308 references:00609,01076,03229 WHEREO = $E871 Defined:01329 references:00786,03243 WHICHT = $E8A8 Defined:01358 references:01369 WHRO1 = $E885 Defined:01338 references:01334 WHRO2 = $E88E Defined:01343 references:01339 WHRO3 = $E897 Defined:01348 references:01344 WHRO4 = $E89F Defined:01353 references:01349 WRAX = $EA42 Defined:01593 references:00604,01042,02961,02964 WRITAD = $E2DD Defined:00602 references:00520 WRITAZ = $E2DB Defined:00601 references:00570,00686,01008,01739,03042,03061,03662 XORY = $FDEF Defined:03935 references:03739,03760 XORY1 = $FDFC Defined:03941 references:03938 XORYRT = $FE02 Defined:03944 references:03947 XORYZ = $FDF1 Defined:03936 references:03731 ZON = $F25D Defined:02718 references:02734,02736 ZON1 = $F261 Defined:02720 references:02728 ZON2 = $F26C Defined:02724 references:02725 ZPAGE = $FC38 Defined:03724 references:03721 ZPX = $FC55 Defined:03736 references:03733 ZPY = $FC50 Defined:03734 references:- ============================================================ ERROR LIST ============================================================ (no errors) ------------------------------------------------------------ Origin : $A000 Range : $E000 - $FFFF Size : 8192 bytes CRC-16 : $B11B Errors : 0 ------------------------------------------------------------